我正在尝试在 TFS 的 TEST 安装中设置/覆盖一些设置,以在构建过程中强制进行代码分析和相关设置(无论项目文件中的设置如何)
我们目前在 TEST TFS 安装中使用:
我们可以按预期编译示例 .net 4.5 项目(类库 (DLL)、Web 应用程序等)。这仅与覆盖关联的代码分析设置有关(希望如此)。
场景 1 - 在我们开发人员机器上的示例应用程序中,当您选择项目设置时(右键单击 -> 解决方案资源管理器中的属性),如果我打开“在构建时启用代码分析”并选择规则,请转到代码分析选项卡下拉菜单中的设置按预期执行,因此会产生一些警告。此技术添加
<RunCodeAnalysis>false</RunCodeAnalysis>
如果在记事本中打开到 *.csproj 文件。如果执行构建以编译示例项目/解决方案,则按预期执行代码分析。我不想在每个项目上都这样做,因为开发人员可以将其关闭(尽管我希望有 checkin 政策和/或私有(private)/门控 checkin 以及强制执行此操作)。场景 2 - 我可以禁用“在构建时启用代码分析”复选框并在我们的 TFSBuild.proj 文件中强制进行代码分析(我们(将)使用默认的 upgradetemplate.xaml 作为我们的流程定义,因为我们将从 TFS 2008 升级到我们的LIVE TFS 安装)通过具有:
<RunCodeAnalysis>Always</RunCodeAnalysis>
这是可行的,这就是我们将如何强制(仍有待学习的类(class):-))对我们的构建进行代码分析。
然后在设置其他相关的代码分析设置时出现问题。例如,应用/使用哪些默认规则集或将 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 文件中读取的。
如有任何问题,请随时提出并提前致谢
最佳答案
我有一个我认为与巡航控制类似的问题,没有使用 CODE_ANALYSIS
进行编译编译符号,即使在 VS.Net 中选中了“在构建时启用代码分析(定义 CODE_ANALYSIS 常量)”。
看是不是check,CODE_ANALYSIS
实际上并没有显式添加到 csproj 中的编译符号列表中(即使它出现在文本框“条件编译符号”中),只有 <RunCodeAnalysis>true</RunCodeAnalysis>
被添加。
通过 VS.Net 编译时,CODE_ANALYSIS
会自动添加,但在使用巡航控制使用的 MSBuild 时不会。
我最终在 VS.Net 中将“条件编译符号”从“CODE_ANALYSIS;MySymbol”更改为“MySymbol;CODE_ANALYSIS”。这样做迫使 CODE_ANALYSIS
也出现在 csproj 中。
关于build - 在 TFSBuild.proj 中设置代码分析设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354412/