这应该是显而易见的,但我无法让它工作......
我想要做的很简单:如果有警告,我希望我的编译失败并出现错误.是的,着名的TreatWarningsAsErrors......
我在我的C#项目属性中配置它

这导致TreatWarningsAsErrors我的csproj 中的预期部分:
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
Run Code Online (Sandbox Code Playgroud)
到目前为止private一切顺利,如果我在我的代码中添加一个无用的变量,它会导致编译错误:
private int unused;
Run Code Online (Sandbox Code Playgroud)
错误3警告错误:从不使用字段'XXXX.unused'
但整个问题是,我无法使其适用于装配参考问题.如果我有一个未知程序集的引用,编译器(devenv或msbuild)会发出警告,但我想要一个错误.
最终,我正在尝试配置一个gated check-in TFS构建配置,因此如果找不到 " 引用的组件'XXXX',TFS将拒绝提交. "警告.比修改构建过程模板更简单的东西会很棒.
有人问过,但没有回答.答案(使用/warn:1)不适用于msbuild.exe,只适用于csc.exe.也许我错过了csc和msbuild之间的东西?
我想在我使用时禁止所有编译器警告和代码分析警告(例如"变量'variableNameHere'已分配,但其值..."或代码分析警告:CA1805:Microsoft.Performance:...)命令行msbuild.我不想改变解决方案文件.我正在构建的非常大的解决方案中有几百个警告消息 - 修复它们远远超出了我的项目范围.
我试过/v:quiet但是没用.
有没有办法通过命令行执行此操作?
更新:这个:
C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe C:\Dev\ReallyBigSolution.sln /p:NoWarn=true /p:NoWarn=CA1031
绝对不行.我仍然收到数百个警告,包括我特别阻止的警告(CA1031).
使用/p:RunCodeAnalysis=Never或/p:RunCodeAnalysis=false显然不会抑制代码分析警告或错误.
我目前正在使用msbuild构建多个项目.我对由.targets文件处理的构建进行了一个小的自定义.一种解决方案是添加代码段
<Import Project="MyTargets.targets"/>
Run Code Online (Sandbox Code Playgroud)
到每个项目文件.但是,理想情况下我不想触摸项目文件,并能够将此信息作为参数传递给msbuild.这样我就可以轻松控制是否从命令行运行此自定义,而且我不必触摸现有的项目文件.
这可能吗?