我们正在尝试升级我们的代码库以使用 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 对象?
提前致谢。
克里斯