Любая опция командной строки MSBuild для динамического отключения анализа кода для проекта c ++? - PullRequest
0 голосов
/ 10 июля 2019

Я получил следующую ошибку при компиляции проекта c ++ (анализ кода включен) с помощью Build Tools 2017 в контейнере Windows «windowservercore».

Запуск анализа кода для 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>

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Есть ли опция 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. Поместите этот файл в папку вашего решения или укажите путь в структуре каталогов вашего проекта.

0 голосов
/ 10 июля 2019

Похоже, вторая ошибка уже исправлена ​​Microsoft: https://developercommunity.visualstudio.com/content/problem/334430/unable-to-run-code-analysis-on-cmake-project.html. Итак, вы обновили свою визуальную студию 2019?

И вам не следует подавлять ошибки или предупреждения (особенно в c ++), когда среда выполнения особенно хрупка для сбоев.

...