web-dev-qa-db-ja.com

VS2015:警告MSB3884:ルールセットファイルが見つかりませんでした

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はデフォルトを使用します。

VS2015 Project Properties Code Analysis tab '

典型的なプロジェクトファイルのフラグメントを次に示します。

  <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>

プロジェクトファイルからコード分析の行を削除せずに、プロジェクトファイルを再度保存するとそれが再び追加されますが、警告を削除/修正するにはどうすればよいですか?

58

VS2013からVS2015にアップグレードした後、同じ問題が発生しました。

私の解決策は:

  1. プロジェクトのプロパティで[コード分析]セクションに移動します。
  2. ルールセットのリストで[参照]オプションを選択します。 enter image description here
  3. VS2015ルールセットフォルダーを参照します。 C:\ Program Files(x86)\ Microsoft Visual Studio 14.0\Team Tools\Static Analysis Tools\Rule Sets
  4. ルールセットを選択します。新しいプロジェクトで使用されるデフォルトは次のとおりです:MinimumRecommendedRules.ruleset
  5. 再構築します。警告が消えたことを確認してください。 enter image description here
72
Jon Shadforth

VS 2013からVS 2015にも移行した後、この警告が表示されました。私の場合、エラーはCould not find rule set file "AllRules.ruleset"でした。私の修正は、.csprojファイルのVisualStudioVersion設定を14.0に変更して、正しいルールセットフォルダーを検索することでした。

VisualStudioVersion setting

それと再構築の後、警告は解決されました。はるかに簡単です。

16
RJ Cuthbertson

<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>を設定してこの警告を取り除きました

7
Lu55

警告を発するプロジェクトファイルには、<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がコメントしたように)

6
Treer

ここで提案されているさまざまなソリューションを検討しました。それぞれに良い要素がありましたが、それぞれに調整が必要でした。私はきれいな解決策を見つけました:

プロジェクトファイルで既存の<PropertyGroup>要素を見つけるか、条件を持たない(構成やプラットフォームなど)、つまり、すべてのプレート上のすべての構成に適用する要素を作成します。この要素に、現在のdev envディレクトリから「ルールセット」ディレクトリへの相対パスを指定する<CodeAnalysisRuleSetDirectories>要素を追加します。例えば:

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

ソリューションをコンパイルするときに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
Andrew Harris

Visual StudioではなくVisual Studio Build Toolsがインストールされているビルドサーバーでこのエラーが発生しました。

私にとっての解決策は、インストーラーを使用して、個々のコンポーネントリストでStatic analysis toolsを有効にすることでした。

3
Adam