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


72

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

一次Google搜索显示了一篇MSDN文章,其中有Stack Overflow文章指向以及许多其他站点。

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

我同时安装了VS2013和VS2015。

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

<CodeAnalysisRuleSetDirectories>
<CodeAnalysisRuleDirectories> 

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

<CodeAnalysisIgnoreBuiltInRuleSets> 
<CodeAnalysisIgnoreBuiltInRules>

我正在尝试使用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>

在不从项目文件中删除“代码分析”行的情况下,尽管再次保存项目文件只会将其重新添加,但如何消除/修复警告?



@ timB33这两个问题之间的区别是,在这种情况下,目录中没有明确的.csproj的文件中设置
RJ卡思伯森

Answers:


89

从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. 重建。检查警告是否消失。 在此处输入图片说明

14
执行此操作时,我在.csproj中获得了相对路径。相对于我的工作空间,这会使我的团队的其余部分混乱。
timB33

@ timB33:建议您遵循33020507和Visual Studio升级过程的建议:使用env变量设置路径;$(DevEnvDir)\..\..\Team Tools\...
Nigel Touch

2
这适用于2015年。对于2017年,我不得不浏览到:C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Team Tools \ Static Analysis Tools \ Rule Sets \(您可能需要使用\ Professional \)
WhoIsRich

如果这个问题持续到2019年... 2019年现在将设置规则的路径显示在屏幕上
JStevens

1
对于社区版,它同样是C:\ Program Files \ Microsoft Visual Studio \ 2017 \ Community \ Team Tools \ Static Analysis Tools \ Rule Sets
balintn

17

从VS 2013迁移到VS 2015后,我也遇到了这个警告。就我而言,错误是Could not find rule set file "AllRules.ruleset"。对我来说,解决方法是VisualStudioVersion将.csproj文件中的设置更改14.0为正确的规则集文件夹中的设置:

VisualStudioVersion设置

之后,进行了重建,该警告已解决。容易得多。


2
这似乎是正确的方法……它为我解决了多个项目中的问题。
克里斯·斯蒂尔

6
我的.csproj文件中没有这些属性
PandaWood

9

我花了一些时间看这里提出的不同解决方案-它们每个都有好的元素,但是每个都需要一些调整。我发现一个干净的解决方案是:

<PropertyGroup>在项目文件中找到不存在任何条件的现有元素或创建一个元素(例如,配置或平台),即将适用于所有平台上的所有配置。向此元素添加一个<CodeAnalysisRuleSetDirectories>元素,该元素指定当前dev env目录中“规则集”目录的相对路径,例如:

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

8

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


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>

成为

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

(Jon Shadforth的回答也对我有用,但是我不喜欢将路径添加到更多项目中,正如timB33所说)


的确,旧版本路径没有升级,因为自从我使用VS 2010或2012创建以来就没有修改项目属性,因此没有升级...有趣的情况,其中干净的计算机会引起麻烦:-)
barbara.post

5

在编译从VS2015升级到VS2017但在路径(C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin)中具有MSBuild 14的解决方案时具有此功能。更改以确保路径15(C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin)都可以正常工作。


4

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

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


1
这也解决了我的问题,在使用构建工具的构建服务器上,我像这样安装了它: 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' -Wait -PassThru
Alexanderius

2

现在这些二进制分析仪已被弃用的链接

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

之前:

编辑之前

后:

编辑后

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

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

-再次执行右键单击,然后编辑“ fileName”

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.