我有两个简单的项目,一个是DotNet Core(比如说CoreProject),另一个是.net 4.5.2(比如说OldCode)。我能够引用这些项目但是当我从CoreProject调用OldCode时遇到以下错误:
System.IO.FileNotFoundException occurred
HResult=0x80070002
Message=Could not load file or assembly 'System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
The system cannot find the file specified.
我曾尝试将System.Configuration添加到项目中,但我不确切知道应该添加哪个文件。我没有project.json。我只有配置文件:launchSettings.json和appsettings.json。我使用nuGet添加System.Configuration,因为它是旧版本。
当我运行命令dotnet restore以将依赖项添加到System.Configuration时,我应该把引用放在哪里?
答案 0 :(得分:2)
目前,.NET系列看起来像这样:
(图片来自.NET Core, .NET Framework, Xamarin – The “WHAT and WHEN to use it”)
当您创建一个针对顶部框架之一的项目(例如.NET Core)时,您无法将该项目用于其他框架(例如.NET Framework)。 System.Configuration
是专门针对.NET Framework的资产,在.NET Core中不存在。
另一方面,如果您的依赖项反过来以.NET为目标,您可以编写与所有框架兼容的代码(在限制范围内 - 请参阅compatibility chart以查看版本如何映射)。标准。这不适用于System.Configuration
,因为它是特定于.NET Framework的,并不针对.NET标准。
作为替代方案,您可以使用.NET Core Configuration Model(尽管我使用的名称实际上是针对.NET Standard,因此可以在任何框架中使用)。或者你可以使用我自己的.NET Settings Framework,它是一个抽象,适用于成熟的System.Configuration
模型(仅限.NET Framework)和.NET Core配置模型(.NET标准)。