web-dev-qa-db-fra.com

VS2015: avertissement MSB3884: impossible de trouver le fichier d'ensemble de règles

Après la mise à niveau de mon projet WinForms VS2013 vers VS2015, j'ai commencé à voir l'avertissement MSB3884 "Impossible de trouver le fichier de jeu de règles".

Une recherche Google a permis de trouver un article MSDN, qu’un article de Stack Overflow renvoie à de nombreux autres sites.

Question similaire: 020507 MSDN: Avertissement VS2015 MSB3884

J'ai les deux VS2013 et VS2015 installés.

Les fichiers de projet donnant les avertissements (et ceux qui ne le sont pas) ne contiennent pas ces entrées.

<CodeAnalysisRuleSetDirectories>
<CodeAnalysisRuleDirectories> 

Si je supprime les deux autres entrées du fichier de projet, le problème disparaît, ce qui est évident, car aucun fichier de règles n'est défini.

<CodeAnalysisIgnoreBuiltInRuleSets> 
<CodeAnalysisIgnoreBuiltInRules>

J'essaie de construire en externe en utilisant msbuild, cependant VS2015 a aussi tendance à montrer le problème.

Chose intéressante, si je clique sur le bouton Ouvrir dans la zone Code Analyzer des propriétés du projet, je récupère le fichier.

La spécification d'un ensemble de règles différent ne fait aucune différence. Cela me fait penser qu’il est possible qu’il existe un paramètre de variable d’environnement, mais que cela ne me vienne à l’esprit. Les analyseurs de code sont une fonction du fichier de projet. Je peux ajouter un attribut de répertoire, mais le consensus est de supprimer les chemins, le <CodeAnalysisRule*Directories>.

L'interface graphique utilise les valeurs par défaut:

VS2015 Project Properties Code Analysis tab '

Voici un fragment de fichier de projet typique.

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

Sans supprimer les lignes d'analyse de code du fichier de projet, bien que l'enregistrement d'un nouveau fichier de projet ne fasse que le rajouter, comment puis-je éliminer/corriger l'avertissement?

58
Sarah Weinberger

Je viens d'avoir le même problème après la mise à niveau de VS2013 à VS2015.

Ma solution était:

  1. Sur les propriétés du projet, accédez à la section Analyse du code.
  2. Sélectionnez l'option Parcourir dans la liste des ensembles de règles. enter image description here
  3. Accédez au dossier Ensembles de règles VS2015. C:\Fichiers de programme (x86)\Microsoft Visual Studio 14.0\Outils d'équipe\Outils d'analyse statique\Jeux de règles
  4. Choisissez un ensemble de règles. La valeur par défaut utilisée par les nouveaux projets est la suivante: MinimumRecommendedRules.ruleset
  5. Reconstruire. Vérifiez l'avertissement est parti. enter image description here
72
Jon Shadforth

J'ai également touché cet avertissement après avoir migré de VS 2013 à VS 2015 également. Dans mon cas, l'erreur était Could not find rule set file "AllRules.ruleset". Le correctif pour moi était de changer le paramètre VisualStudioVersion dans le fichier .csproj en 14.0 pour qu'il apparaisse dans le bon dossier de jeux de règles:

VisualStudioVersion setting

Après cela et une reconstruction, l'avertissement a été résolu. Beaucoup plus facile.

16
RJ Cuthbertson

Je me suis débarrassé de cet avertissement en mettant <CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>

7
Lu55

Vous avez dit que vos fichiers de projet émettant les avertissements ne contenaient pas de <CodeAnalysisRuleSetDirectories> entrée.

Le mien non plus, et comme vous, je récupère le fichier si je clique sur le bouton Ouvrir de la section Analyse de code des propriétés du projet.

Cependant, la recherche dans tous les fichiers de projet de la solution a abouti à deux projets pour lesquels <CodeAnalysisRuleSetDirectories> balises, et ces balises contenaient une version plus ancienne de la référence Visual Studio dans le chemin.

Résoudre ces chemins a corrigé mon problème et je viens de confirmer que le projet qui soulevait l'erreur faisait référence à un projet qui faisait référence aux projets contenant le mauvais <CodeAnalysisRuleSetDirectories> entrées.

Alors, recherchez la solution entière et corrigez tous les <CodeAnalysisRuleSetDirectories> _ chemins ou essayez de les supprimer.

Dans mon cas

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

devenu

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

(La réponse de Jon Shadforth a également fonctionné pour moi, mais je n'aimais pas ajouter le chemin à plus de projets - commenta timB33)

6
Treer

J'ai passé un peu de temps à examiner les différentes solutions proposées ici - elles comportaient chacune de bons éléments mais chacune nécessitait quelques ajustements. J'ai trouvé une solution propre à être:

Localisez un existant ou créez un <PropertyGroup> élément du fichier de projet ne contenant AUCUNE condition (par exemple, configuration ou plate-forme), c'est-à-dire qui s'appliquera à toutes les configurations sur toutes les plateformes. Ajoutez à cet élément un <CodeAnalysisRuleSetDirectories> élément spécifiant le chemin relatif du répertoire "Rule Set" à partir du répertoire dev env actuel. Par exemple:

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

Avait cela lors de la compilation d'une solution mise à niveau de VS2015 à VS2017 mais avait MSBuild 14 dans le chemin (C:\Program Files (x86)\MSBuild\14.0\Bin). Modifié pour s’assurer que 15 était dans le chemin (C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin) et que tout fonctionnait.

5
Andrew Harris

J'ai eu cette erreur sur mon serveur de génération qui contient Visual Studio Build Tools plutôt que Visual Studio.

La solution pour moi était d’utiliser le programme d’installation pour activer Static analysis tools dans la liste des composants individuels.

3
Adam