从完整的.NET Framework引用.NET Standard项目

时间:2017-03-14 23:21:49

标签: c# .net .net-standard

我有一个.net标准1.4项目,我通过.net 4.6.1项目中的项目引用引用它。

当我跑步时,我收到以下消息:

  

System.IO.FileNotFoundException:'无法加载文件或程序集'System.Threading.Thread,   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或   其中一个依赖项。系统找不到指定的文件。'

我可以通过引用System.Threading.Thread版本4.3.0的nuget包来解决这个问题。但由于某种原因,这实际上是版本4.0.1.0,这意味着我需要一个绑定重定向。

添加绑定重定向让我超越了这个问题并进入下一个问题。这是:

  

System.IO.FileNotFoundException:'无法加载文件或程序集   'System.IO.FileSystem,Version = 4.0.1.0,Culture = neutral,   PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。该   系统找不到指定的文件。'

我是否需要手动为我的.net标准软件包的所有依赖项添加软件包(以及可能的绑定重定向)?这似乎不是出售的东西。如果我必须提供所需的所有程序集,即使这些已经包含在我所针对的.net框架中的GAC中,那么.net标准是什么意思。我无法看到它是如何出售的.net标准1.4与.net 4.6.1兼容,如果兼容你的意思是只要你不使用.net 4.6.1 BCL库。

以下问题似乎与https://github.com/NuGet/Home/issues/4488有关 不过我已经尝试了那里的建议工作。这是添加:

<RestoreProjectStyle>PackageReference</RestoreProjectStyle> 

到.net 4.6.1项目。我尝试了这个并没有什么区别。

更新 将以下内容添加到我的.net 4.6.1项目后:

 <PackageReference Include="Legacy2CPSWorkaround" Version="1.0.0">
     <PrivateAssets>All</PrivateAssets>
 </PackageReference>

我现在在输出目录中有System.IO.FileSystem,但它的版本错误。这是4.0.2.0。我可以再次使用绑定重定向来解决这个问题,但我不需要这样做。

我不知道这个4.0.2.0 dll来自哪里,因为它不在我的包文件夹中所以它不能来自nuget?

0 个答案:

没有答案