Подтвердить что ты не робот

VS2015: предупреждение MSB3884: не удалось найти файл набора правил

После обновления моего проекта WinForms VS2013 до VS2015 я начал видеть предупреждение MSB3884 "Не удалось найти файл набора правил".

В результате поиска Google появилась одна статья MSDN, на которую указывает статья, а также множество других сайтов.

Аналогичный вопрос: 33020507 MSDN: VS2015 MSB3884 Предупреждение

У меня установлены как VS2013, так и VS2015.

Файлы проекта, содержащие предупреждения (и те, которые этого не делают), не имеют этих записей.

<CodeAnalysisRuleSetDirectories>
<CodeAnalysisRuleDirectories> 

Если я удалю две другие записи из файла проекта, проблема исчезнет, ​​что очевидно, так как нет набора файлов правил.

<CodeAnalysisIgnoreBuiltInRuleSets> 
<CodeAnalysisIgnoreBuiltInRules>

Я пытаюсь построить внешнее использование msbuild, однако VS2015 также показывает проблему.

Интересно, что если я нажму кнопку Open в свойствах Code Code Analyzer, я получаю файл.

Указание другого набора правил не имеет значения. Это заставляет меня думать, что, возможно, есть настройка переменных среды, а не то, что приходят на ум. Анализаторы кода являются функцией файла проекта. Я могу добавить атрибут каталога, но консенсусом является выбор путей, <CodeAnalysisRule*Directories>.

В графическом интерфейсе используются значения по умолчанию:

VS2015 Вкладка"

Вот типичный фрагмент файла проекта.

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x86\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
    <Prefer32Bit>false</Prefer32Bit>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <CodeAnalysisRuleSet>BasicCorrectnessRules.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x64\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
  </PropertyGroup>

Не избавляясь от строк анализа кода из файла проекта, хотя сохранение файла проекта снова просто добавит его обратно, как я могу устранить/исправить предупреждение?

4b9b3361

Ответ 1

У меня была такая же проблема после обновления с VS2013 до VS2015.

Мое решение было:

  • В свойствах проекта перейдите в раздел Анализ кода.
  • Выберите опцию Обзор в списке наборов правил. введите описание изображения здесь
  • Перейдите в папку наборов правил VS2015. C:\Program Files (x86)\Microsoft Visual Studio 14.0\Командные инструменты\Статические инструменты анализа\Наборы правил
  • Выберите набор правил. По умолчанию используются новые проекты: MinimumRecommendedRules.ruleset
  • Перестроить. Проверьте предупреждение. введите описание изображения здесь

Ответ 2

Я ударил это предупреждение после перехода с VS 2013 на VS 2015. В моем случае ошибка была Could not find rule set file "AllRules.ruleset". Исправление для меня заключалось в том, чтобы изменить параметр VisualStudioVersion в файле .csproj на 14.0, чтобы он выглядел в правильной папке набора правил:

Настройка VisualStudioVersion

После этого и восстановления, предупреждение было разрешено. Намного легче.

Ответ 3

Вы сказали, что ваши файлы проектов, выдающие предупреждения, не содержат записи <CodeAnalysisRuleSetDirectories>.

Моя тоже не была, и, как и вы, я получаю файл, если я нажму кнопку "Открыть" в разделе "Анализ кода проекта".

Однако при поиске всех файлов проекта в решении появились два проекта, у которых были теги <CodeAnalysisRuleSetDirectories>, а те теги содержали более старую версию ссылки Visual Studio в пути.

Исправление этих путей устранило мою проблему, и я только что подтвердил, что проект, который поднимал ошибку, ссылается на проект, который ссылался на проекты, содержащие плохие записи <CodeAnalysisRuleSetDirectories>.

Итак, выполните поиск всего решения и исправьте все пути <CodeAnalysisRuleSetDirectories> или попробуйте удалить их.

В моем случае

<CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>

стал

<CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>

(Ответ Джона Шадфорта также работал у меня, но мне не нравилось добавлять путь к большему количеству проектов, как прокомментировал timB33)

Ответ 4

Я избавился от этого предупреждения, установив <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>

Ответ 5

Это было при компиляции решения, обновленного с VS2015 до VS2017, но имеющего MSBuild 14 в пути (C:\Program Files (x86)\MSBuild\14.0\Bin). Изменено для обеспечения того, чтобы 15 находилось в пути (C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin) и все работало.

Ответ 6

Я потратил некоторое время на то, чтобы рассмотреть различные предлагаемые здесь решения - у каждого из них были хорошие элементы, но каждый из них требовал некоторых корректировок. Я нашел чистое решение:

Найдите существующий или создайте элемент <PropertyGroup> в файле проекта, который не имеет никаких условий (например, конфигурации или платформы), то есть будет применяться ко всем конфигурациям на всех форматах. Для этого elment добавьте элемент <CodeAnalysisRuleSetDirectories> определяющий относительный путь к каталогу "Набор правил" из текущего каталога dev env. Например:

<PropertyGroup>
    <CodeAnalysisRuleSetDirectories>$(DevEnvDir)\..\..\Team Tools\Static Analysis Tools\Rule Sets</CodeAnalysisRuleSetDirectories>
</PropertyGroup>

Ответ 7

У меня была эта ошибка на моем сервере сборки, на котором есть Visual Studio Build Tools, а не Visual Studio.

Решение для меня состояло в том, чтобы использовать установщик, чтобы включить Static analysis tools в списке отдельных компонентов.