asp.net mvc - TemporaryGeneratedFile_[guid] in/obj/debug breaking build
asp.net-mvc .net-4.5 (6)
Tengo 3 archivos temporales que se crean en obj / debug:
P.ej
- TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
- TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
- TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
(Las guías no parecen cambiar incluso después de una solución limpia)
Mi construcción está fallando porque:
SA1633: el archivo no tiene encabezado, el encabezado Xml no es válido o el encabezado no se encuentra en la parte superior del archivo.
No quiero desactivar la regla de StyleCop. ¿Cómo averiguo qué está creando estos archivos temporales?
El sitio es un sitio asp.net MVC 4, con 5 modelos, 4 controladores, 2 clases, 2 páginas web aspx y 1 referencia de servicio, que numéricamente no parecen coincidir con los 3 archivos.
¿Alguna sugerencia?
Editar: Si cambio el marco de 4.5 a 4, estos archivos desaparecerán y la construcción será exitosa.
Mi versión de StyleCop es 4.4, estoy más que dispuesto a encontrar la manera de ignorar obj / depuración
En el bloque de analizadores de un archivo StyleCop.Settings, agregue una entrada para estos archivos: el valor es una expresión regular, por lo que podría usarse uno más ajustado para hacer coincidir un guid, pero estos satisfacen mi necesidad por ahora.
<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>
Enfrenté un problema similar y lo resolví de la siguiente manera:
Se eliminó la depuración en la carpeta bin además de depurar en la reconstrucción de la carpeta obj y funcionó
Estaba ayudando a un colega que había agregado un nuevo proyecto a nuestra solución VS principal y que obtuvo los mismos 3 errores. Pasé por los pasos sugeridos arriba con él, pero no tuve éxito en arreglarlo. Después de esto, descubrí que había omitido uno de los pasos que realizamos al agregar un nuevo proyecto dentro de nuestra solución que usa Code Analysis y StyleCop. Se olvidó de agregar el archivo Settings.StyleCop a su proyecto :)
Los 3 archivos con el prefijo "TemporaryGeneratedFile_" son generados automáticamente por el archivo Microsoft.WorkflowBuildExtensions.targets que probablemente se haya importado a través de la cadena:
- * .csproj ->
- Microsoft.CSharp.targets ->
- Microsoft.Common.targets ->
- Microsoft.WorkflowBuildExtensions.targets
Se generan bajo la ruta de salida intermedia apuntada por la propiedad MSBuild $(IntermediateOutputPath)
, por lo general algo así como obj/debug
. Una forma de lidiar con las advertencias / errores de StyleCop sobre estos archivos autogenerados es decirle a StyleCop que omita cualquier archivo * .cs bajo $(IntermediateOutputPath)
. Por ejemplo, incluya el siguiente artículo en su proyecto:
<ItemGroup>
<ExcludeFromStyleCop Include="$(IntermediateOutputPath)/**/*.cs" />
</ItemGroup>
ExcludeFromStyleCop
es un nombre de elemento reconocido por el archivo StyleCop.targets para excluir archivos del análisis durante una compilación (al menos para StyleCop 4.7). La estrella doble **
es la sintaxis de MSBuild para buscar recursivamente en una carpeta.
El nuevo elemento podría aparecer en el Explorador de soluciones en Visual Studio. Si eso no es deseable, puede ocultarse utilizando los metadatos del elemento ''Visible'':
<ItemGroup>
<ExcludeFromStyleCop Include="$(IntermediateOutputPath)/**/*.cs" >
<Visible>False</Visible>
</ExcludeFromStyleCop>
</ItemGroup>
Se puede usar un enfoque similar para excluir otros archivos si es necesario. Espero que eso ayude.
Recientemente me encontré con este mismo problema de la nada.
Para mí, pude superar esto abriendo los archivos .csproj para cada proyecto, luego eliminé la siguiente línea:
<Import Project="$(SolutionDir)/CodeAnalize/Microsoft.StyleCop.targets" />
Después de volver a abrir la solución, fue capaz de construir todo sin un error.
Resolví este problema yendo a la solución del proyecto (cuya compilación) estaba dando este error.
- haga clic derecho en el proyecto y descargue el proyecto.
- A continuación, haga clic derecho en el proyecto y edite el archivo .csproj.
- Busque estos archivos generados temporales (problemáticos). (ver código de ejemplo)
- elimine las referencias de este archivo del archivo .csproj.
- Haga clic derecho en el proyecto y vuelva a cargar el proyecto.
- Reconstruye la solución.
- Es bueno ir ahora ...
se ven así en el archivo 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" />