选择要构建的.Net Framework的Service Pack

时间:2009-07-15 22:39:10

标签: .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(包括spervice包和更高级的主要修订版)来测试我们所有的项目,因此使用不在原始2.0中的API的构建将不再失败...这是兼容性测试的可怕消息。

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

如果上述问题没有肯定的答案,我就是在寻找其他选择。

谢谢。

2 个答案:

答案 0 :(得分:1)

除非您使用新的API,否则应该没有更新到SP2的影响。您在构建机器上看到的确切失败了什么?

我同意,顺便说一下,他们不应该在不改变小转速的情况下添加任何东西。然而,这是为了Vista,他们失去了理智。

我想。

答案 1 :(得分:1)

我有run into this problem with 3.5 SP1;不幸的是,没有简单的解决方案。唯一的解决方案是:1)希望服务包的更改不会影响您 - 有时他们会这样做,有时他们不会 - 或2)创建单独的构建计算机,每个计算机只安装相应的服务包,并且在那里建立。