在安装了 VS2010 的机器上和在安装了 7.1 SDK 的机器上构建之间的差异

2024-01-02

我们正在尝试升级代码库以使用 Visual Studio 2010,但在构建服务器上对所有内容进行排序时遇到问题。我们不想在构建服务器上安装 Visual Studio 2010,因此只安装了 .Net 4 框架和 SDK (v7.1)。

我们仍然希望以 .Net 3.5 平台为目标(我们将在未来某个时候升级到 .Net 4,但现在还不想)。

我们已经设法编译代码,但现在遇到如下运行时错误。

Could not load file or assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

问题是运行时正在尝试反序列化嵌入的资源,如果我查看反射器中的资源,我会发现它们都是 .Net 4.0 对象。例如我们的一个windows应用程序的图标是类型System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

那么看起来 MSBuild 正在错误地编译资源(使用与目标不同的运行时)?我通过查看在我的开发计算机上构建的 dll 和在构建服务器上构建的 dll 的差异来确认这一点 - 很明显看到一个 dll 的资源使用 2.0.0.0 版本,而另一个(来自构建服务器)使用 4.0 .0.0。在这两种情况下,项目引用都是 v2.0.0.0 dll(正如人们所期望的那样)。

有谁知道为什么 MSBuild 将资源编译为 4.0 对象?

提前致谢。

Chris


当您将解决方案升级到VS2010时,您是否更改了目标框架?您可以通过在文本编辑器中查看 csproj 文件来查找它。 您的构建服务器中有 7.0a 框架吗?

EDIT :

我不久前遇到了同样的问题,这与未设置注册表项有关。看看这里:http://connect.microsoft.com/VisualStudio/feedback/details/594338/tfs-2010-build-agent-and-windows-7-1-sdk-targeting-net-3-5-generates-wrong-embedded-资源 http://connect.microsoft.com/VisualStudio/feedback/details/594338/tfs-2010-build-agent-and-windows-7-1-sdk-targeting-net-3-5-generates-wrong-embedded-resources

我认为您需要手动添加注册表项HKLM\Software\Microsoft\MsBuild\ToolsVersions\SDK35ToolsPath

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在安装了 VS2010 的机器上和在安装了 7.1 SDK 的机器上构建之间的差异 的相关文章

随机推荐