如果存在.net版本不匹配,则强制构建失败

时间:2011-08-16 15:24:52

标签: c# msbuild build nant

我们有一些应用程序仍然必须是2.0,因为它们将用于没有安装v3.5框架的客户端计算机,并且我们希望确保没有代码被删除属于。我知道3.5框架包含2.0框架。也就是说,我们试图确保如果有人无意中将特定项目的目标版本从2.0更改为其他项目,我们的自动构建将失败。这不应该发生,但我们要特别小心。

我们认为可能会在.csproj文件中使用beforeBuild和可能的TargetFrameworkVersion。如“如果TargetFrameworkVersion不是2.0,则输出消息并使构建失败”。这可能/最好的方法吗?

1 个答案:

答案 0 :(得分:3)

听起来您想要将有问题的项目的“目标框架”更改为.Net Framework 2.0。

从MSDN文章“如果更改.NET Framework版本,如果您的代码包含对不同版本的引用,则可能会收到错误消息。”

这里有很棒的MSDN演练:http://msdn.microsoft.com/en-us/library/bb398202.aspx

如果要在构建服务器上强制实施2.0版,请修改msbuild选项以将工具集版本“覆盖”为2.0。此命令切换优先于项目设置文件,并且“导致所有项目及其项目到项目的依赖关系根据ToolsVersion构建,即使解决方案中的每个项目都指定了自己的”。以下是关于工具集的msdn:http://msdn.microsoft.com/en-us/library/bb383796(v=vs.90).aspx,这里是关于如何指定命令行开关的MSDN:http://msdn.microsoft.com/en-us/library/bb383985(v=vs.90).aspx

如果您使用TFS进行夜间构建,那么这里是如何添加参数(我正在使用VS 2010 Pro):

  1. 转到团队资源管理器并展开项目
  2. 右键单击构建项目
  3. 选择新建构建定义(或编辑现有构建定义)
  4. 转到流程
  5. 展开“代理商设置”
  6. 查找MsBuild参数。
  7. 添加/tv:2.0并在完成任何其他设置后保存构建更改。
  8. 现在,即使项目文件发生更改,构建服务器也会捕获2.0级以上的代码并失败。如果您没有使用TFS进行构建,请查看您的工具是否允许您修改msbuild命令行。