TemporaryGeneratedFile_ 在/ obj / debug打破构build
我在obj / debug中创build了3个临时文件:
例如
- TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
- TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
- TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
(即使解决scheme清理后,GUID似乎也不会改变)
我的构build失败,因为:
SA1633:该文件没有标题,标题Xml无效,或标题不在文件顶部。
我不想closuresStyleCop规则。 我如何找出什么是创build这些临时文件?
该网站是一个asp.net MVC 4网站,有5个模型,4个控制器,2个类,2个aspx网页和1个服务引用,在数值上似乎不符合3个文件。
任何指针?
编辑:如果我将框架从4.5更改回到4,这些文件消失,构build成功。
我的StyleCop版本是4.4,我比开放find一种方法让它忽略OBJ /debugging
在StyleCop.Settings文件的parsing器块中,为这些文件添加一个条目:该值是一个正则expression式,因此可以使用更紧的匹配guid,但这些符合我现在的需要。
<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>
我解决了这个问题,通过去项目解决scheme(其构build)给这个错误。
- 右键单击该项目并卸载该项目。
- 然后右键单击该项目并编辑.csproj文件。
- 寻找这些临时(有问题的)生成的文件。 (请参阅示例代码)
- 从.csproj文件中删除此文件引用。
- 右键单击项目并加载项目。
- 重build解决scheme。
- 现在好走了…
他们看起来像这样在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" />
具有“TemporaryGeneratedFile_”前缀的3个文件由Microsoft.WorkflowBuildExtensions.targets文件自动生成,该文件很可能是通过链接导入的:
- * .csproj – >
- Microsoft.CSharp.targets – >
- Microsoft.Common.targets – >
- Microsoft.WorkflowBuildExtensions.targets
它们是在$(IntermediateOutputPath)
MSBuild属性指向的中间输出path下生成的,通常是obj\debug
。 处理这些自动生成文件的StyleCop警告/错误的一种方法是告诉StyleCop跳过$(IntermediateOutputPath)
下的任何* .cs文件。 例如,在您的项目中包含以下项目:
<ItemGroup> <ExcludeFromStyleCop Include="$(IntermediateOutputPath)\**\*.cs" /> </ItemGroup>
ExcludeFromStyleCop
是由StyleCop.targets文件识别的项目名称,用于在构build期间从分析中排除文件(至less对于StyleCop 4.7)。 双星**
是用于在文件夹下recursionsearch的MSBuild语法。
新项目可能显示在Visual Studio的解决scheme资源pipe理器中。 如果这是不可取的,可以通过使用“可见”项目元数据来隐藏:
<ItemGroup> <ExcludeFromStyleCop Include="$(IntermediateOutputPath)\**\*.cs" > <Visible>False</Visible> </ExcludeFromStyleCop> </ItemGroup>
如果需要,可以使用类似的方法排除其他文件。 我希望有帮助。
我正在帮助一位在我们的主要VS解决scheme中增加了一个新项目的同事,并得到了同样的三个错误。 我和他一起完成了上面的build议步骤,但没有解决这个问题。 在此之后,我发现在使用Code Analysis和StyleCop的解决scheme中添加新项目时,我错过了其中一个步骤。 他忘了添加Settings.StyleCop文件到他的项目:)
我最近从不知不觉中遇到了同样的问题。
对于我来说,我可以通过打开每个项目的.csproj文件来解决这个问题,然后删除下面一行:
<Import Project="$(SolutionDir)\CodeAnalize\Microsoft.StyleCop.targets" />
重新打开解决scheme后,它能够build立一切,没有错误。