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>
.
В графическом интерфейсе используются значения по умолчанию:
"
Вот типичный фрагмент файла проекта.
<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>
Не избавляясь от строк анализа кода из файла проекта, хотя сохранение файла проекта снова просто добавит его обратно, как я могу устранить/исправить предупреждение?
Ответы
Ответ 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
в списке отдельных компонентов.