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

时间:2015-11-10 18:42:32

标签: c# msbuild visual-studio-2015 code-analysis

将我的WinForms VS2013项目升级到VS2015后,我开始看到MSB3884"找不到规则集文件"警告。

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

类似问题:33020507 MSDN:VS2015 MSB3884 Warning

我安装了VS2013和VS2015。

提供警告的项目文件(以及没有警告的项目文件)没有这些条目。

<CodeAnalysisRuleSetDirectories>
<CodeAnalysisRuleDirectories> 

如果我从项目文件中删除了其他两个条目,那么问题就会消失,这很明显,因为没有设置规则文件。

<CodeAnalysisIgnoreBuiltInRuleSets> 
<CodeAnalysisIgnoreBuiltInRules>

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

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

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

GUI使用默认值:

VS2015 Project Properties Code Analysis tab&#39;

这是一个典型的项目文件片段。

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

如果不从项目文件中删除代码分析行,虽然再次保存项目文件只会将其添加回来,如何消除/修复警告?

8 个答案:

答案 0 :(得分:72)

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

我的解决方案是:

  1. 在项目属性中,转到“代码分析”部分。
  2. 选择规则集列表中的“浏览”选项。 enter image description here
  3. 浏览到VS2015规则集文件夹。 C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Team Tools \ Static Analysis Tools \ Rule Sets
  4. 选择规则集。新项目使用的默认值为: MinimumRecommendedRules.ruleset
  5. 重建。检查警告已经消失。 enter image description here

答案 1 :(得分:16)

我从VS 2013迁移到VS 2015后也发出了此警告。就我而言,错误是Could not find rule set file "AllRules.ruleset"。我的修复方法是将.csproj文件中的VisualStudioVersion设置更改为14.0,以便它查找正确的规则集文件夹:

VisualStudioVersion setting

在此之后重建,警告已解决。更容易。

答案 2 :(得分:6)

您说发出警告的项目文件不包含任何<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>

(Jon Shadforth的回答也适用于我,但我不喜欢添加更多项目的路径 - 正如timB33所评论的那样)

答案 3 :(得分:6)

我通过设置<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>

来消除此警告

答案 4 :(得分: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)并且全部工作。

答案 5 :(得分:5)

我花了一些时间来研究这里提出的不同解决方案 - 它们各自都有很好的元素,但每个都需要一些调整。我找到了一个干净的解决方案:

在项目文件中找到现有的或创建<PropertyGroup>元素,该元素没有条件(例如配置或平台),即适用于所有平台上的所有配置。为此元素添加一个<CodeAnalysisRuleSetDirectories>元素,指定&#34;规则集&#34;的相对路径。当前dev env目录中的目录。 E.g:

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

答案 6 :(得分:3)

我的构建服务器上有此错误,该服务器上装有Visual Studio Build Tools,而不是Visual Studio。

对我来说,解决方案是使用安装程序在单个组件列表中启用Static analysis tools

答案 7 :(得分:2)

现在不推荐使用这些二进制分析器link

我正在使用VS 2019,我的解决方案是在所有PropertyGroups中编辑项目文件并删除与CodeAnalysis相关的所有行:

之前:

before edit

之后:

after edit

*要在Visual Studio中编辑.vbproj或.csproj,您需要卸载项目。

-在解决方案中单击鼠标右键,然后卸载项目。

-再次右键单击并编辑'fileName'

我没有尝试过,但是该解决方案也必须在VS 2015和VS 2017中都可以使用。