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使用默认值:
这是一个典型的项目文件片段.
<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后,我遇到了同样的问题.
我的解决方案是:
RJ *_*son 16
从VS 2013迁移到VS 2015之后我也发出了这个警告.就我而言,错误是Could not find rule set file "AllRules.ruleset"
.我的修复方法是VisualStudioVersion
将.csproj文件中的设置更改为14.0
使其查找正确的规则集文件夹:
在那之后和重建,警告得到了解决.更容易.
你说你的项目文件发出警告不包含任何<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所评论的那样)
我通过设置摆脱了这个警告 <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
我花了一些时间看这里提出不同的解决方案 - 他们每过好元素,但是每一个需要一些调整.我找到了一个干净的解决方案:
<PropertyGroup>
在项目文件中找到现有的或创建没有条件的元素(例如配置或平台),即适用于所有平台上的所有配置.在这个<CodeAnalysisRuleSetDirectories>
元素中添加一个元素,指定当前dev env目录中"Rule Set"目录的相对路径.例如:
<PropertyGroup>
<CodeAnalysisRuleSetDirectories>$(DevEnvDir)\..\..\Team Tools\Static Analysis Tools\Rule Sets</CodeAnalysisRuleSetDirectories>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
编译从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)并且全部工作.
我的构建服务器上出现此错误,该服务器上有 Visual Studio 构建工具而不是 Visual Studio。
我的解决方案是使用安装程序Static analysis tools
在各个组件列表中启用。