web-dev-qa-db-fra.com

TemporaryGeneratedFile_ [guid] dans/obj/construction de rupture de débogage

J'ai 3 fichiers temporaires en cours de création dans obj/debug:

Par exemple.

  • TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
  • TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
  • TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs

(Les guids ne semblent pas changer même après une solution propre)

Ma construction échoue parce que:

SA1633: Le fichier n'a pas d'en-tête, l'en-tête XML n'est pas valide ou l'en-tête ne se trouve pas en haut du fichier.

Je ne veux pas désactiver la règle StyleCop. Comment savoir ce qui crée ces fichiers temporaires?

Le site est un site asp.net MVC 4, avec 5 modèles, 4 contrôleurs, 2 classes, 2 pages Web aspx et 1 référence de service, qui ne semblent pas concorder numériquement avec les 3 fichiers.

Des pointeurs?

Edit: Si je change de structure de la version 4.5 à la version 4, ces fichiers disparaissent et la construction est réussie.

Ma version de StyleCop est 4.4, je suis plus que disposé à trouver un moyen de le faire pour ignorer obj/debug

50
NikolaiDante

Dans le bloc des analyseurs syntaxiques d'un fichier StyleCop.Settings, ajoutez une entrée pour ces fichiers: La valeur est une expression rationnelle, vous pouvez donc utiliser une valeur plus précise pour faire correspondre une guid, mais cela répond à mes besoins pour le moment.

  <Parsers>
    <Parser ParserId="Microsoft.StyleCop.CSharp.CsParser">
      <ParserSettings>
        <BooleanProperty Name="AnalyzeDesignerFiles">False</BooleanProperty>
        <CollectionProperty Name="GeneratedFileFilters">
          <Value>\.g\.cs$</Value>
          <Value>\.generated\.cs$</Value>
          <Value>\.g\.i\.cs$</Value>
          <Value>TemporaryGeneratedFile_.*\.cs$</Value>
        </CollectionProperty>
      </ParserSettings>
    </Parser>
  </Parsers>
37
NikolaiDante

J'ai résolu ce problème en allant à la solution du projet (dont la construction) donnait cette erreur. 

  1. faites un clic droit sur le projet et déchargez le projet. 
  2. Cliquez ensuite avec le bouton droit sur le projet et modifiez le fichier .csproj. 
  3. Recherchez ces fichiers générés (problématiques). (voir exemple de code)
  4. supprimez ces références de fichier du fichier .csproj. 
  5. Faites un clic droit sur le projet et rechargez le projet. 
  6. Reconstruisez la solution. 
  7. C'est bon d'aller maintenant ...

ils ressemblent à ceci dans le fichier csproj:

<Compile Include="src\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs" />
<Compile Include="src\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs" />
<Compile Include="src\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs" />
43
Rajesh

Les 3 fichiers avec le préfixe "TemporaryGeneratedFile_" sont générés automatiquement par le fichier Microsoft.WorkflowBuildExtensions.targets le plus probablement importé via la chaîne: 

  • * .csproj ->
  • Microsoft.CSharp.targets ->
  • Microsoft.Common.targets ->
  • Microsoft.WorkflowBuildExtensions.targets

Ils sont générés sous le chemin de sortie intermédiaire indiqué par la propriété $(IntermediateOutputPath) MSBuild, généralement quelque chose comme obj\debug. Une façon de traiter les avertissements/erreurs StyleCop à propos de ces fichiers générés automatiquement consiste à dire à StyleCop de sauter tout fichier * .cs sous la fonction $(IntermediateOutputPath). Par exemple, incluez l'élément suivant dans votre projet:

<ItemGroup>
    <ExcludeFromStyleCop Include="$(IntermediateOutputPath)\**\*.cs" />
</ItemGroup>

ExcludeFromStyleCop est un nom d'élément reconnu par le fichier StyleCop.targets pour exclure les fichiers de l'analyse lors d'une construction (au moins pour StyleCop 4.7). La double étoile ** est la syntaxe MSBuild pour la recherche récursive dans un dossier. 

Le nouvel élément peut apparaître dans l'explorateur de solutions de Visual Studio. Si cela n'est pas souhaitable, vous pouvez le masquer à l'aide des métadonnées de l'élément 'Visible':

<ItemGroup>
    <ExcludeFromStyleCop Include="$(IntermediateOutputPath)\**\*.cs" >
        <Visible>False</Visible>
    </ExcludeFromStyleCop>
</ItemGroup>

Une approche similaire peut être utilisée pour exclure d’autres fichiers si nécessaire. J'espère que ça aide.

14
Vlado

J'ai fait face à un problème similaire et l'ai résolu comme suit:

Supprimé debug dans le dossier bin En plus de debug dans le dossier obj Rebuild et cela a fonctionné

0
Mortada Issa

J'ai récemment rencontré ce même problème de nulle part. 

Pour moi, j'ai pu surmonter ce problème en ouvrant les fichiers .csproj de chaque projet, puis en supprimant la ligne suivante:

<Import Project="$(SolutionDir)\CodeAnalize\Microsoft.StyleCop.targets" />

Après avoir rouvert la solution, il a été capable de tout construire sans erreur.

0
erupnu

J'aidais un collègue qui avait ajouté un nouveau projet à notre solution VS principale et qui avait ces 3 mêmes erreurs. J'ai parcouru les étapes suggérées ci-dessus avec lui, mais je n'ai pas réussi à le réparer. Après cela, j'ai découvert qu'il avait oublié l'une des étapes que nous avons effectuées lors de l'ajout d'un nouveau projet dans notre solution qui utilise l'analyse de code et StyleCop . Il avait oublié d'ajouter le fichier Settings.StyleCop à son projet :) 

0
John