在库和.Net framework 4.6.1中使用.Net Standard 1.4和应用程序时,无法加载文件System.IO.FileSystem,Version = 4.0.1.0

我有一个包含库和2个应用程序的解决方案。 这些应用程序代表相同的程序,其中一个程序是通过UAP10定位到Windows App Store,另一个是使用.Net Framework 4.6.1定位到Microsoft Windows PC。 我正在使用Visual Studio 2017。

  • 我设置了库项目目标.Net标准1.4。
  • 我将UWP应用程序设置为目标Windows 10 Aniversary Edition(10.0; Build 14393),最低版本Windows 10(10.0; Build 10586)。
  • 我将通用Windows应用程序设置为目标.Net Framework 4.6.1。

UWP版本编译并运行良好。

最初,.Net Framework 4.6.1编译并运行。 但是,当我从System.IO调用File.Open时,我收到以下错误消息:

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

File.Run的代码块在库代码(.Net Standard 1.4)中。 我不确定是什么导致了这个问题。 我认为我可以在引用.Net Framework 4.6.1的应用程序中使用.Net Standard 1.4库。


作为一种解决方法,我尝试在.Net Framework应用程序中安装System.IO的Nuget包。 System.IO版本4.0.1.0甚至不是一个选项。 有一个版本4.0.10,但安装此Nuget包时它不起作用。

那么,如何在.Net Framework 4.6.1应用程序中正确引用System.IO操作,该应用程序引用.Net Standard 1.4库中的System.IO代码?

这通常发生在“经典”csproj项目中,当引用项目需要覆盖覆盖系统定义的类型但没有绑定重定向时,可以正确设置它。 将所有软件包安装到.net框架应用程序(例如NETStandard.LibraryNETStandard.Library.NETFramework (即将发布的.NET Standard 2.0))时,应自动完成。

要强制生成绑定重定向,请将其添加到.NET Framework项目的csproj文件中(如果它是可执行项目,则第二个属性应该是无关紧要但不会受到影响):

  true true