我有一个包含一个库和两个应用程序的解决方案。这些应用程序代表同一个程序,其中一个针对通过 UAP10 的 Windows App Store 构建,另一个针对使用 .Net Framework 4.6.1 的 Microsoft Windows PC 构建。我正在使用 Visual Studio 2017。
- 我将库项目目标设置为 .Net 标准 1.4。
- 我将 UWP 应用程序设置为面向 Windows 10 周年纪念版(10.0;内部版本 14393)、最低版本 Windows 10(10.0;内部版本 10586)。
- 我将通用 Windows 应用程序设置为以 .Net Framework 4.6.1 为目标。
UWP 版本编译并运行良好。
最初,.Net Framework 4.6.1 编译并运行。但是,当我从 System.IO 调用 File.Open 时,收到以下错误消息:
System.IO.FileNotFoundException:“无法加载文件或程序集
'System.IO.FileSystem,版本=4.0.1.0,文化=中性,
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 Standard 1.4 库中 System.IO 代码的 .Net Framework 4.6.1 应用程序中正确引用 System.IO 操作呢?
当引用的项目需要覆盖覆盖系统定义的类型但不存在可以正确设置此设置的绑定重定向时,这种情况通常发生在“经典”csproj 项目中。将所有包安装到 .net Framework 应用程序中时(例如NETStandard.Library
or NETStandard.Library.NETFramework
(对于即将推出的 .NET Standard 2.0)),这应该自动完成。
要强制生成绑定重定向,请将其添加到 .NET Framework 项目的 csproj 文件中(如果它是可执行项目,则第二个属性应该不相关,但不会造成影响):
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)