将我的WinForms VS2013项目升级到VS2015后,我开始看到MSB3884"找不到规则集文件"警告。
谷歌搜索出现了一篇MSDN文章,Stack Overflow文章指出了这篇文章以及许多其他网站。
类似问题:33020507 MSDN:VS2015 MSB3884 Warning
我安装了VS2013和VS2015。
提供警告的项目文件(以及没有警告的项目文件)没有这些条目。
<CodeAnalysisRuleSetDirectories>
<CodeAnalysisRuleDirectories>
如果我从项目文件中删除了其他两个条目,那么问题就会消失,这很明显,因为没有设置规则文件。
<CodeAnalysisIgnoreBuiltInRuleSets>
<CodeAnalysisIgnoreBuiltInRules>
我正在尝试使用msbuild在外部构建,但是VS2015也倾向于显示问题。
有趣的是,如果我点击项目属性代码分析器区域中的打开按钮,我会得到该文件。
指定其他规则集没有任何区别。这让我觉得可能有一个环境变量设置,而不是任何想到的。代码分析器是项目文件的一个功能。我可以添加一个目录属性,但共识是取出路径<CodeAnalysisRule*Directories>
。
GUI使用默认值:
这是一个典型的项目文件片段。
<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>
如果不从项目文件中删除代码分析行,虽然再次保存项目文件只会将其添加回来,如何消除/修复警告?
答案 0 :(得分:72)
从VS2013升级到VS2015后,我遇到了同样的问题。
我的解决方案是:
答案 1 :(得分:16)
我从VS 2013迁移到VS 2015后也发出了此警告。就我而言,错误是Could not find rule set file "AllRules.ruleset"
。我的修复方法是将.csproj文件中的VisualStudioVersion
设置更改为14.0
,以便它查找正确的规则集文件夹:
在此之后重建,警告已解决。更容易。
答案 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相关的所有行:
之前:
之后:
*要在Visual Studio中编辑.vbproj或.csproj,您需要卸载项目。
-在解决方案中单击鼠标右键,然后卸载项目。
-再次右键单击并编辑'fileName'
我没有尝试过,但是该解决方案也必须在VS 2015和VS 2017中都可以使用。