在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>
答案 0 :(得分:0)
似乎第二个错误已由Microsoft修复: https://developercommunity.visualstudio.com/content/problem/334430/unable-to-run-code-analysis-on-cmake-project.html。 那么您是否更新了Visual Studio 2019?
并且您不应该抑制错误或警告(尤其是在c ++中),在这些错误或警告中,运行时特别容易崩溃。
答案 1 :(得分:0)
是否有任何MSBuild选项来禁用C ++项目的代码分析 无需编辑项目文件?
选中this document,您可以使用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。将此文件放在解决方案文件夹中,或将其放在项目目录结构中的路径中。