我在最终用户计算机上遇到装配解决问题,我认为这与使用便携式类库有关....
我有一个最初用Visual Studio 2010编写的.NET 4.0应用程序。最近我们升级到Visual Studio 2012,我们创建了一些可移植类库的项目。我不相信我们现在需要这些功能,但我们也在构建可能从这些库中受益的Windows 8商店应用程序。
当我编译项目时,便携式库功能到底有什么作用?我希望它允许我在不修改或重新编译的情况下在不同的框架上运行它。
当我在 reflector dotPeek中查看库时,它将Platform属性显示为:
.NETPortable,版本= 4.0版,档案=规范5
引用似乎是2.0-ish:
mscorlib,版本= 2.0.5.0
系统,版本= 2.0.5.0
System.Runtime.Serialization,Version = 2.0.5.0
当我在这个最终用户的机器上运行应用程序时,我在日志文件中看到一个错误:
无法加载文件或程序集,'System.Core,Version = 2.0.5.0 ...'
谷歌搜索System.Core 2.0.5.0似乎是指SilverLight - 它似乎是目标框架之一。
此计算机未安装Visual Studio,但具有.NET 4.0(4.0.3更新)
我是否应该采取不同的方式进行编译,我应该在我的依赖项或我应该在最终用户机器上安装的东西进行调查? 2.0.5.0引用了什么?
答案 0 :(得分:18)
对于.NET 4,您需要更新(KB2468871)才能使便携式类库工作。来自KB Article:
功能5
对支持可移植库的更改。这些变化包括API 更新和粘合剂修改。此更新使CLR能够绑定 成功地移植到库中,以便单个DLL可以运行 .NET Framework 4,在Silverlight上,在Xbox上,或在Windows Phone上。 此更新将公共Silverlight API添加到.NET Framework 4中 同一个地方。 API签名将保持一致 该平台。所有修改都是100%兼容的 不要破坏任何现有的代码。
另请参阅MSDN Portable Class Library Documentation的“部署.NET Framework应用程序”部分。
编辑:实际上,如果你提到的机器安装了.NET 4.0.3,那就足够了。你能仔细检查以确保它实际安装好吗?