我在这里读过许多问题(和答案),其中有与这个问题类似的术语,但所有这些问题最终都是关于针对不同的主要版本构建的。
事情是这样的。我们的客户使用的是.Net framework 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)。如果做不到这一点,如何确保当特定项目使用与特定CLR修订版不兼容的特性时VS 2005抛出错误(为了破坏齿轮,没有FxCop或类似的集成,只有基本的VS 2005特性)?
如果上述问题没有一个肯定的答案,我完全赞成寻求替代方案。
- 谢谢-谢谢
2条答案
按热度按时间iibxawm41#
除非您使用新的API,否则更新到SP2应该没有任何影响。您在构建计算机上看到的具体故障是什么?
我同意,顺便说一句,他们不应该在不改变小版本的情况下添加任何东西。
我想是吧。
xzlaal3s2#
我有run into this problem with 3.5 SP1;不幸的是,没有简单的解决方案。唯一的解决方案是:1)希望服务包的更改不会影响您--有时会,有时不会--或者2)创建单独的构建计算机,每个计算机只安装适当的服务包,然后在那里进行构建。