Asp.net core DotNet核心在VS 2017中增加依赖性

Asp.net core DotNet核心在VS 2017中增加依赖性,asp.net-core,.net-core,Asp.net Core,.net Core,我有两个简单的项目,一个是dotnetcore(比如CoreProject),另一个是.net4.5.2(比如OldCode)。我能够引用项目,但当我从CoreProject调用旧代码时,我遇到以下错误: System.IO.FileNotFoundException occurred HResult=0x80070002 Message=Could not load file or assembly 'System.Configuration, Version=4.0.0.0, Culture

我有两个简单的项目,一个是dotnetcore(比如CoreProject),另一个是.net4.5.2(比如OldCode)。我能够引用项目,但当我从CoreProject调用旧代码时,我遇到以下错误:

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时,应该将引用放在何处?

此时,.NET系列看起来如下所示:

(图片来自)

当您创建一个针对顶部某个框架(例如NET Core)的项目时,您不能将该项目用于其他框架(例如NET Framework)
System.Configuration
是专门针对.NET Framework的资产,它不存在于.NET Core中

另一方面,如果依赖项转而以.NET标准为目标,则可以通过以.NET标准为目标来编写与所有框架兼容的代码(在限制范围内-请参见查看版本如何映射)。这不适用于
System.Configuration
,因为这是特定于.NET Framework的,并且不针对.NET标准


作为替代方案,您可以使用(尽管我使用的是名称,但它实际上是针对.NET标准的,因此可以在任何框架中使用)。或者,您可以使用我自己的,这是一种抽象,既适用于成熟的
系统.Configuration
模型(.NET Framework only)也适用于.NET核心配置模型(.NET Standard)。

目前,.NET家族看起来像这样:

(图片来自)

当您创建一个针对顶部某个框架(例如NET Core)的项目时,您不能将该项目用于其他框架(例如NET Framework)
System.Configuration
是专门针对.NET Framework的资产,它不存在于.NET Core中

另一方面,如果依赖项转而以.NET标准为目标,则可以通过以.NET标准为目标来编写与所有框架兼容的代码(在限制范围内-请参见查看版本如何映射)。这不适用于
System.Configuration
,因为这是特定于.NET Framework的,并且不针对.NET标准


作为替代方案,您可以使用(尽管我使用的是名称,但它实际上是针对.NET标准的,因此可以在任何框架中使用)。或者,您可以使用我自己的抽象,这是一种既适用于成熟的
系统.Configuration
模型(.NET Framework only)又适用于.NET Core配置模型(.NET Standard)的抽象。

您不能在.NET Core中使用.NET 4.5.2库。它们必须是.NET标准库/PCL(然后可以以netstandard1.0到1.6为目标,映射到.NET>=4.5的某些功能集),或者ASP.NET核心项目必须以.NET>=4.5为目标too@Tseng因此,如果我有一些不能用.NETCore编写的代码,我将无法引用4.5.2中的项目?是的。这就是为什么您必须将代码放在NETStandard库中,这将确保您的库只使用所有平台上可用的API(当您以netstandard1.x为目标时),而不能使用.NETCore中的.NET4.5.2库。它们必须是.NET标准库/PCL(然后可以以netstandard1.0到1.6为目标,映射到.NET>=4.5的某些功能集),或者ASP.NET核心项目必须以.NET>=4.5为目标too@Tseng因此,如果我有一些不能用.NETCore编写的代码,我将无法引用4.5.2中的项目?是的。这就是为什么您必须将代码放入NETStandard库中,这将确保您的库只使用所有平台上可用的API(当您以netstandard1.x为目标时)