4

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

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

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

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

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

谢谢你。

4

2 回答 2

1

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

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

我猜。

于 2009-07-15T22:41:43.733 回答
1

我在3.5 SP1 中遇到了这个问题;不幸的是,没有简单的解决方案。唯一的解决方案是 1) 希望服务包的更改不会影响您——有时会,有时不会——或 2) 创建单独的构建机器,每台机器只安装适当的服务包,并且在那里建造。

于 2009-07-15T22:44:26.520 回答