我们有一些应用程序仍然必须是2.0,因为它们将用于没有安装v3.5框架的客户端计算机,并且我们希望确保没有代码被删除属于。我知道3.5框架包含2.0框架。也就是说,我们试图确保如果有人无意中将特定项目的目标版本从2.0更改为其他项目,我们的自动构建将失败。这不应该发生,但我们要特别小心。
我们认为可能会在.csproj文件中使用beforeBuild和可能的TargetFrameworkVersion。如“如果TargetFrameworkVersion不是2.0,则输出消息并使构建失败”。这可能/最好的方法吗?
答案 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):
现在,即使项目文件发生更改,构建服务器也会捕获2.0级以上的代码并失败。如果您没有使用TFS进行构建,请查看您的工具是否允许您修改msbuild命令行。