WinForms VS2013プロジェクトをVS2015にアップグレードした後、MSB3884の「ルールセットファイルが見つかりませんでした」という警告が表示され始めました。
Googleの検索で、MSDNの記事が1つ見つかりました。これは、Stack Overflowの記事が他の多くのサイトと同様に指し示しています。
同様の質問: 020507 MSDN: VS2015 MSB3884警告
VS2013とVS2015の両方がインストールされています。
警告を表示するプロジェクトファイル(および表示しないプロジェクトファイル)には、これらのエントリはありません。
<CodeAnalysisRuleSetDirectories>
<CodeAnalysisRuleDirectories>
プロジェクトファイルから他の2つのエントリを削除すると、問題はなくなります。ルールファイルが設定されていないため、これは明らかです。
<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>
プロジェクトファイルからコード分析の行を削除せずに、プロジェクトファイルを再度保存するとそれが再び追加されますが、警告を削除/修正するにはどうすればよいですか?
VS2013からVS2015にアップグレードした後、同じ問題が発生しました。
私の解決策は:
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
を設定してこの警告を取り除きました
警告を発するプロジェクトファイルには、<CodeAnalysisRuleSetDirectories>
エントリが含まれていないと述べました。
私もそうではありませんでした。プロジェクトプロパティの[コード分析]セクションで[開く]ボタンをクリックすると、ファイルが取得されます。
ただし、ソリューション内のすべてのプロジェクトファイルを検索すると、<CodeAnalysisRuleSetDirectories>
タグを持つ2つのプロジェクトが見つかり、それらのタグにはパスに古いバージョンの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がコメントしたように)
ここで提案されているさまざまなソリューションを検討しました。それぞれに良い要素がありましたが、それぞれに調整が必要でした。私はきれいな解決策を見つけました:
プロジェクトファイルで既存の<PropertyGroup>
要素を見つけるか、条件を持たない(構成やプラットフォームなど)、つまり、すべてのプレート上のすべての構成に適用する要素を作成します。この要素に、現在のdev envディレクトリから「ルールセット」ディレクトリへの相対パスを指定する<CodeAnalysisRuleSetDirectories>
要素を追加します。例えば:
<PropertyGroup>
<CodeAnalysisRuleSetDirectories>$(DevEnvDir)\..\..\Team Tools\Static Analysis Tools\Rule Sets</CodeAnalysisRuleSetDirectories>
</PropertyGroup>
ソリューションをコンパイルするときに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 Build Toolsがインストールされているビルドサーバーでこのエラーが発生しました。
私にとっての解決策は、インストーラーを使用して、個々のコンポーネントリストでStatic analysis tools
を有効にすることでした。