VS2015:警告MSB3884:找不到规则集文件

将我的WinForms VS2013项目升级到VS2015后,我开始看到MSB3884“无法find规则集文件”警告。

谷歌search出现了一篇MSDN文章,Stack Overflow文章以及其他许多网站。

类似的问题: 33020507 MSDN: VS2015 MSB3884警告

我已经安装了VS2013和VS2015。

给出警告的项目文件(以及那些没有的)没有这些条目。

<CodeAnalysisRuleSetDirectories> <CodeAnalysisRuleDirectories> 

如果从项目文件中删除另外两个条目,则问题消失,这是显而易见的,因为没有规则文件集。

 <CodeAnalysisIgnoreBuiltInRuleSets> <CodeAnalysisIgnoreBuiltInRules> 

我正在尝试使用msbuild进行外部构build,但是VS2015也倾向于显示这个问题。

有趣的是,如果我点击项目属性代码分析器区域中的打开button,我得到的文件。

指定不同的规则集没有区别。 这让我觉得可能有一个环境variables设置,没有任何想到。 代码分析器是项目文件的一个function。 我可以添加一个目录属性,但共识是取出path, <CodeAnalysisRule*Directories>

GUI使用默认值:

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> 

没有摆脱项目文件中的代码分析线,虽然再次保存项目文件只是将其添加回来,我怎样才能消除/修复警告?

从VS2013升级到VS2015后,我遇到了同样的问题。

我的解决scheme是:

  1. 在项目属性上转到代码分析部分。
  2. select规则集列表中的浏览选项。 在这里输入图像说明
  3. 浏览到VS2015规则集文件夹。 C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Team Tools \ Static Analysis Tools \ Rule Sets
  4. select一个规则集。 新项目使用的默认值是: MinimumRecommendedRules.ruleset
  5. 重build。 检查警告已经消失。 在这里输入图像说明

从VS 2013迁移到VS 2015之后,我也遇到了这个警告。 在我的情况下,错误是Could not find rule set file "AllRules.ruleset" 。 对我来说,修正是将.csproj文件中的VisualStudioVersion设置更改为14.0以便它在正确的规则集文件夹中查找:

VisualStudioVersion设置

之后,重build,警告已经解决。 更容易。

你说你的项目文件发出的警告不包含任何<CodeAnalysisRuleSetDirectories>条目。

我也没有,并且像我一样,如果我点击项目属性代码分析部分中的打开button,我会得到该文件。

但是,search解决scheme中的所有项目文件后,出现了两个具有<CodeAnalysisRuleSetDirectories>标记的项目,这些标记在path中包含一个较早版本的Visual Studio参考。

修复这些path解决了我的问题,并且我刚刚确认引发错误的项目引用了一个引用包含不良<CodeAnalysisRuleSetDirectories>条目的项目的项目。

因此,search整个解决scheme并修复所有<CodeAnalysisRuleSetDirectories>path,或尝试删除它们。

在我的情况

 <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> 

(Jon Shadforth的回答也适用于我,但我不喜欢增加更多项目的path – 正如timB33所评论的)

如果编译一个从VS2015升级到VS2017的解决scheme,但在path(C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin)中有MSBuild 14。 更改以确保15是在path(C:\ Program Files文件(x86)\微软Visual Studio \ 2017 \专业\ MSBuild \ 15.0 \斌),并一切工作。

我通过设置<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>摆脱这个警告。