我正在尝试在 TFS 的 TEST 安装中设置/覆盖一些设置,以在构建过程中强制进行代码分析和相关设置(无论项目文件中的设置如何)
我们目前在 TEST TFS 安装中使用:
- 我们的开发人员机器和构建服务器上的 Visual Studio 2012 Ultimate
- 在一台服务器上安装 TFS 2012(应用程序和数据层)
- 将 TFS 2012 构建服务(控制器和代理)安装在另一台服务器上
我们可以按预期编译示例 .net 4.5 项目(类库 (DLL)、Web 应用程序等)。这仅与覆盖关联的代码分析设置有关(希望如此)。
场景 1 - 在我们开发人员机器上的示例应用程序中,当您选择项目设置时(右键单击 -> 解决方案资源管理器中的属性),如果我打开“在构建时启用代码分析”并选择规则,请转到代码分析选项卡下拉菜单中的设置按预期执行,因此会产生一些警告。<RunCodeAnalysis>false</RunCodeAnalysis>
如果在记事本中打开,此技术将添加到 *.csproj 文件中。如果执行构建以编译示例项目/解决方案,则按预期执行代码分析。我不想在每个项目上都这样做,因为开发人员可以将其关闭(尽管我希望有签入政策和/或私人/门控签入以及强制执行此操作)。
场景 2 - 我可以禁用“在构建时启用代码分析”复选框并在我们的 TFSBuild.proj 文件中强制进行代码分析(我们(将)使用默认的 upgradetemplate.xaml 作为我们的流程定义,因为我们将从 TFS 2008 升级到我们的LIVE TFS 安装)通过具有:
<RunCodeAnalysis>Always</RunCodeAnalysis>
这是可行的,这就是我们将如何强制(仍有待学习的课程:-))对我们的构建进行代码分析。
然后在设置其他相关的代码分析设置时出现问题。例如,应用/使用哪些默认规则集或将 CA 警告视为错误。其中一些设置可以在 VS 中设置,也可以通过在记事本中编辑 *.csproj 来设置。如果我编辑 *.csproj,那么这些值将按预期在构建中使用(以及在开发人员机器上本地使用)。这并不理想,因为我想在 TFSBuild.proj 中集中执行此操作,而无需编辑每个项目文件。我相信我可以使用 TFSbuild.proj 文件中的设置:
<PropertyGroup>
<RunCodeAnalysis>Always</RunCodeAnalysis>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<CodeAnalysisTreatWarningsAsErrors>true</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>
但它们似乎不起作用,或者我把它们放在错误的地方?如何正确修复/使用它们?
仅供参考,我通过以下方式在 TFSBuild.proj 中构建我的解决方案:
<Project DefaultTargets="DesktopBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets" />
<ItemGroup>
<SolutionToBuild Include="/some folder/some solution.sln" />
<ConfigurationToBuild Include="Debug|Any CPU">
<FlavorToBuild>Debug</FlavorToBuild>
<PlatformToBuild>Any CPU</PlatformToBuild>
</ConfigurationToBuild>
</ItemGroup>
</Project>
在构建服务器上,我确实在 c:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\CodeAnalysis 找到了对代码分析目标文件的引用,但我不想更改构建服务器上的默认行为(虽然当我这样做时它确实有效)。例如 CodeAnalysisTreatWarningsAsErrors 的条件必须被评估为假。就像我的值不是从 TFSBuild.proj 读取的,而是从 .csproj 文件中读取的。
如有任何问题,请随时提出并提前致谢