.net - 选择要构建的 .Net Framework 的哪个 Service Pack

标签 .net compiler-construction msbuild .net-2.0 msbuild-task

我在这里阅读了许多问题(和答案),这些问题(和答案)中的术语与这个问题的发音相似,但所有这些最终都是关于针对 .Net 的不同主要版本进行构建的。不幸的是,我遇到了更严重的麻烦。

这是故事。我们的客户使用 .Net 框架的 2.0 版。只是 2.0,根本没有服务包。我们的开发人员过去使用 .Net 2.0 SP1,效果很好。现在,由于我们正在进行其他项目,开发人员(包括我自己)更新到 .Net 2.0 SP2。这就是麻烦开始的地方。显然,MS 以其无穷的智慧决定更改/添加 API 到框架 不增加主要版本 (比如说,2.1)。因此,当您针对 2.0 进行构建时,它会针对 2.0 SP2(如果已安装)进行构建,并且似乎没有一种方法可以对其进行配置。所以开发人员现在可以编写代码,认为他的目标是 2.0,但它不会在客户机器上运行!

我们注意到某些构建(使用 msbuild 完成)在我们的测试盒上开始失败,但在开发人员的机器上运行良好。显然,因为测试盒是按照客户端机器的方式设置的,而且它们的旧框架缺少一些 API。现在,构建农场将安装较新版本的 CLR(包括服务包和更高的主要修订版)来测试我们所有的项目,因此使用非原始 2.0 中的 API 的构建将不再失败......这个对于兼容性测试来说是个可怕的消息。

所以我的问题是这个。如何针对特定的 CLR 修订版(相同的主要版本)构建(使用 msbuild)。如果做不到这一点,当特定项目使用与 CLR 的特定版本不兼容的功能时,如何确保 VS2005 抛出错误(将 Spanner 插入齿轮,没有 FxCop 或类似的集成,只有基本的 VS2005 功能)?

如果上述问题没有肯定的答案,我完全赞成寻找替代方案。

谢谢你。

最佳答案

除非您使用新的 API,否则更新到 SP2 应该没有影响。您在构建机器上看到了哪些故障?

我同意,顺便说一句,他们不应该在不更改次要版本的情况下添加任何内容。然而,这是为 Vista 设计的,他们失去了理智。

我猜。

关于.net - 选择要构建的 .Net Framework 的哪个 Service Pack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1134511/

相关文章:

compiler-construction - 自举的缺点?

c# - 如何使用 licenses.licx 文件

c# - 从 ASP.NET MVC 中的布局调用操作方法

.net - 在矩形内填充文本

c# - 为什么 Select 比 Set 语句快

.net - 您将使用什么来构建新的 .NET 编译器?

c# - 如何使用 MemoryCache 加速将各种对象转换为字符串?

c++ - LLVM - 使用 clang 自动运行 Own Pass

visual-studio - 天蓝色管道中的"AndroidManifest file does not exist"错误

MSBuild项目文件: Copy item to specific location in output directory