I have 3 temporary files being created in obj/debug:
E.g.
- TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
- TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
- TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
(The guids don't seem to change even after a solution clean)
My build is failing because:
SA1633: The file has no header, the header Xml is invalid, or the header is not located at the top of the file.
I don't want to turn the StyleCop rule off. How do I find out what is creating these temporary files?
The site is an asp.net MVC 4 site, with 5 models, 4 controllers, 2 classes, 2 aspx web pages and 1 service reference, which numerically don't seem to tally with the 3 files.
Any pointers?
Edit: If I change framework from 4.5 back to 4 these files go away and the build is successful.
My version of StyleCop is 4.4, I'm more than open to finding a way to get it to ignore obj/debug
I solved this issue by going to the project solution (whose build) was giving this error.
- right click on the project and unload the project.
- Then right click on the project and edit the .csproj file.
- Look for these temp (problematic) generated files. (see example code)
- remove this file references from the .csproj file.
- Right click on project and load back the project.
- Rebuild the solution.
- Its good to go now...
they look like this in the csproj file:
<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" />
In the parsers block of a StyleCop.Settings file add an entry for these files:
The value is a regex, so a tighter one for matching a guid could be used, but these meets my need for now.
<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>
The 3 files with "TemporaryGeneratedFile_" prefix are auto-generated by the Microsoft.WorkflowBuildExtensions.targets file most likely imported via the chain:
- *.csproj -->
- Microsoft.CSharp.targets -->
- Microsoft.Common.targets -->
- Microsoft.WorkflowBuildExtensions.targets
They are generated under the intermediate output path pointed by the $(IntermediateOutputPath)
MSBuild property, usually something like obj\debug
. One way to deal with the StyleCop warnings/errors about these auto-generated files is to tell StyleCop to skip any *.cs files under the $(IntermediateOutputPath)
. For example, include the following item in your project:
<ItemGroup>
<ExcludeFromStyleCop Include="$(IntermediateOutputPath)\**\*.cs" />
</ItemGroup>
ExcludeFromStyleCop
is an item name recognized by the StyleCop.targets file to exclude files from analysis during a build (at least for StyleCop 4.7). The double star **
is MSBuild syntax for searching recursively under a folder.
The new item might show up in the Solution Explorer in Visual Studio. If that is undesirable it can be hidden by using the 'Visible' item metadata:
<ItemGroup>
<ExcludeFromStyleCop Include="$(IntermediateOutputPath)\**\*.cs" >
<Visible>False</Visible>
</ExcludeFromStyleCop>
</ItemGroup>
Similar approach can be used to exclude other files if necessary. I hope that helps.
I was helping a colleague who had added a new project to our main VS solution and who got these same 3 errors. I went through the suggested steps above with him but did not have any success in fixing it. After this, I discovered he had missed one of the steps we perform when adding a new project within our solution that uses Code Analysis and StyleCop.
He had forgot to add the Settings.StyleCop file to his project :)
I have recently ran into this same problem out of nowhere.
For me, I was able to overcome this by opening the .csproj files for each project, then remove the following line:
<Import Project="$(SolutionDir)\CodeAnalize\Microsoft.StyleCop.targets" />
After re-opening the solution, it was able to build everything without an error.
I faced a similar problem and solved it as follow:
Deleted debug in bin folder
in addition to debug in obj folder
rebuild and it worked