[英]Any MSBuild command line option to disable code analysis for c++ project dynamically?
在Windows容器“ windowservercore”中使用Build Tools 2017编译c ++项目(启用代码分析)时,出现以下错误。
针对C / C ++的运行代码分析...
c1xx:错误C2220:警告被视为错误-未生成任何“对象”文件[C:\\ jenkins \\ workspace \\ ABC-DEV \\ ABC \\ ABC.vcxproj]
c1xx:致命错误C1250:无法加载插件“ C:\\ Program Files(x86)\\ Microsoft Visual Studio 14.0 \\ VC \\ bin \\ localespc.dll”。 [C:\\ jenkins \\ workspace \\ ABC-DEV \\ ABC \\ ABC.vcxproj]
编译脚本:
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe" C:\Work\ABC.sln /p:configuration=Release /p:platform=x64 /t:rebuild
我如下编辑ABC.vcxproj,错误C2220和C1250得到解决。
<RunCodeAnalysis>false</RunCodeAnalysis>
<EnablePREfast>false</EnablePREfast>
但是我尝试使用以下编译命令来动态禁用代码分析,但出现了另一个错误。
"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe" C:\Work\ABC.sln /p:configuration=Release /p:platform=x64 /p:RunCodeAnalysis=false /t:rebuild
c1xx:致命错误C1253:无法加载模型文件'res://mspft140.dll/300'。
是否有任何MSBuild选项可以在不编辑项目文件的情况下禁用c ++项目的代码分析?
更新:
将Directory.Build.props放入ABC.sln文件的目录中不会禁用代码分析。
Directory.Build.props
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<RunCodeAnalysis>false</RunCodeAnalysis>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
</ItemDefinitionGroup>
</Project>
这是我勾选“在构建中启用代码分析”复选框后的ABC.vcxproj。
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<RunCodeAnalysis>false</RunCodeAnalysis>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<EnablePREfast>false</EnablePREfast>
</ClCompile>
</ItemDefinitionGroup>
看来第二个错误已由Microsoft修复: https : //developercommunity.visualstudio.com/content/problem/334430/unable-to-run-code-analysis-on-cmake-project.html 。 那么您是否更新了Visual Studio 2019?
而且,您不应该抑制错误或警告(尤其是在c ++中),因为在这些情况下,运行时特别容易崩溃。
是否有任何MSBuild选项可以在不编辑项目文件的情况下禁用c ++项目的代码分析?
检查此文档 ,可以使用Directory.Build.props
定义RunCodeAnalysis
属性,而无需修改.vcxproj文件。
1.创建一个.txt文件,并将其重命名为Directory.Build.props
。
2.内容应为:
<Project>
<PropertyGroup>
<RunCodeAnalysis>false</RunCodeAnalysis>
</PropertyGroup>
...
</Project>
(禁用所有配置和平台的代码分析)
或类似的东西:
<Project>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<RunCodeAnalysis>false</RunCodeAnalysis>
</PropertyGroup>
...
</Project>
(仅禁用使用Release|x64
组合进行构建的代码分析)
3.将此文件放在解决方案文件夹中,或将其放在项目目录结构中的路径中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.