在.NET Core 1.1 csproj中引用.NET 4.5 dll?

我正在运行VS 2017 RC4。

我将.NET Core应用程序中的引用添加到我的.NET 4.5 dll中并进行编译。 当在运行时调用引用dll的行时,我得到:

System.IO.FileNotFoundException: 'Could not load file or assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.' 

此图显示要使用4.5引用,我需要使用netstandard 1.1。 http://sofzh.miximages.com/c%23/172.png

假设这是我需要的,我如何在我的.csproj中引用它? 我只能在使用project.json时找到旧文档。

我尝试添加以下但它没有帮助:

 1.1 

另外,我需要添加:

 1.0.3 

或者我得到FileNotFoundException:无法加载文件或程序集。 该系统找不到指定的文件。

这是为什么?

以下是我的.csproj的相关部分:

  netcoreapp1.1 $(PackageTargetFallback);portable-net45+win8+wp8+wpa81; 1.0.3    Dlls\My4.5dll.dll   

您无法(安全地)将.NET Framework 4.5库加载到.NET Core中,因为它可能使用.NET Core中不可用的API。

只有当您的库定位于portable-net45+win8 (.NET Framework 4.5 Windows 8 Portable Class Profile或更高版本)时,它才能与.NET Core一起使用。 因为这个特定的PCL配置文件限制了与(以前称为WinRT) System.Runtime兼容的API,这是.NET Core所基于的。

有关兼容PCL配置文件的列表,请参阅此列表 (底部的PCL兼容性)

如果要引用的程序集不支持netstandard1.x或任何受支持的配置文件,则必须以 .NET Framework 4.5而不是.NET Core 目标。

在你的csproj

 net45 ...   

或者如果你多目标

 net45;netcoreapp1.1 ...    

您无法在.NET Core项目中自动神奇地使用任何.NET Framework 4.5库。 只有PCL和netstandard1.x

更新

为了完整起见:

如果您确定您的类库/包是针对兼容的PCL,那么即使它们不以netstandard1.x为目标,您也可以使nuget恢复此包。

  $(PackageTargetFallback);portable-net45+win8+wp8+wpa81;  

警告的话

我再说一遍,除了兼容的PCL库之外, 永远不要放任何其他东西。 永远不要net45放在这里。 这将迫使NuGet下载并安装此软件包,但它不会使它工作并在运行时崩溃,类似于上面的错误!

它只是强制nuget安装包,这些包已知在过渡期间使用.NET Core,直到大多数软件包都以netstandard1.x目标!

我有同样的问题,但使用.NET Standard 2.0和.NET Framework 4.0程序集。 解决方案是使用我的dll在nuget包浏览器中创建一个nuget,目标是.NET Standard 2.0,然后将包添加到项目中。

链接到nuget explorer: https : //github.com/NuGetPackageExplorer/NuGetPackageExplorer