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)给这个错误。

  1. 右键单击该项目并卸载该项目。
  2. 然后右键单击该项目并编辑.csproj文件。
  3. 寻找这些临时(有问题的)生成的文件。 (请参阅示例代码)
  4. 从.csproj文件中删除此文件引用。
  5. 右键单击项目并加载项目。
  6. 重build解决scheme。
  7. 现在好走了…

他们看起来像这样在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立一切,没有错误。