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

Sar*_*ger 64 c# msbuild code-analysis visual-studio-2015

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

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

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

我安装了VS2013和VS2015.

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

<CodeAnalysisRuleSetDirectories>
<CodeAnalysisRuleDirectories> 
Run Code Online (Sandbox Code Playgroud)

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

<CodeAnalysisIgnoreBuiltInRuleSets> 
<CodeAnalysisIgnoreBuiltInRules>
Run Code Online (Sandbox Code Playgroud)

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

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

指定不同的规则集没有区别.这让我觉得可能有一个环境变量设置,而不是任何想到的.代码分析器是项目文件的一个功能.我可以添加一个目录属性,但共识是取出路径,<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>
Run Code Online (Sandbox Code Playgroud)

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

小智 78

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

我的解决方案是:

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

  • 当我这样做时,我在.csproj中获得了相对路径.这会让我的团队其他成员陷入困境,因为它与我的工作空间相关. (14认同)
  • 这适用于 2015 年。对于 2017 年,我必须浏览到:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Team Tools\Static Analysis Tools\Rule Sets\(您可能需要使用 \Professional\) (2认同)

RJ *_*son 16

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

VisualStudioVersion设置

在那之后和重建,警告得到了解决.更容易.

  • 我的.csproj文件中没有这些属性 (5认同)
  • 这似乎是正确的方法...它解决了我在多个项目中的问题. (2认同)

Tre*_*eer 7

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

我也没有,如果我点击项目属性代码分析部分中的打开按钮,我就像你一样得到文件.

但是,搜索解决方案中的所有项目文件会显示两个具有<CodeAnalysisRuleSetDirectories>标记的项目,并且这些标记在路径中包含较旧版本的Visual Studio引用.

修复这些路径解决了我的问题,我刚刚确认引发错误的项目引用了一个项目,该项目引用了包含错误<CodeAnalysisRuleSetDirectories>条目的项目.

因此,搜索整个解决方案并修复所有<CodeAnalysisRuleSetDirectories>路径,或尝试删除它们.

就我而言

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

成为

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

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


Lu5*_*u55 7

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


fsb*_*vio 7

这些二进制分析器现已弃用link

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

前:

编辑前

后:

编辑后

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

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

- 再次右键单击并编辑“文件名”

我没有尝试,但这个解决方案也必须在 VS 2015、VS 2017 中工作。


Ric*_*bob 6

我花了一些时间看这里提出不同的解决方案 - 他们每过好元素,但是每一个需要一些调整.我找到了一个干净的解决方案:

<PropertyGroup>在项目文件中找到现有的或创建没有条件的元素(例如配置或平台),即适用于所有平台上的所有配置.在这个<CodeAnalysisRuleSetDirectories>元素中添加一个元素,指定当前dev env目录中"Rule Set"目录的相对路径.例如:

<PropertyGroup>
    <CodeAnalysisRuleSetDirectories>$(DevEnvDir)\..\..\Team Tools\Static Analysis Tools\Rule Sets</CodeAnalysisRuleSetDirectories>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)


And*_*ris 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)并且全部工作.


Ada*_*dam 5

我的构建服务器上出现此错误,该服务器上有 Visual Studio 构建工具而不是 Visual Studio。

我的解决方案是使用安装程序Static analysis tools在各个组件列表中启用。

  • 这也解决了我的问题,在我的构建服务器上使用构建工具安装了它,如下所示:`Start-Process "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vs_installer.exe" -ArgumentList 'modify --installPath “C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools”--quiet--add Microsoft.VisualStudio.Component.Static.Analysis.Tools--add Microsoft.Net.Component.4.5.TargetingPack--norestart --force'-等待-PassThru` (2认同)