TemporaryGeneratedFile_ [guid]在/ obj/debug中打破构建

Nik*_*nte 56 asp.net-mvc stylecop .net-4.5

我在obj/debug中创建了3个临时文件:

例如

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

(即使在解决方案清洁后,指导似乎也没有改变)

我的构建失败了因为:

SA1633:文件没有标题,标题Xml无效,或标题不在文件顶部.

我不想关闭StyleCop规则.如何找出创建这些临时文件的内容?

该站点是一个asp.net MVC 4站点,有5个模型,4个控制器,2个类,2个aspx网页和1个服务引用,在数字上似乎与3个文件不符.

有什么指针吗?

编辑:如果我将框架从4.5更改回4,这些文件就会消失,构建成功.

我的StyleCop版本是4.4,我更愿意找到一种让它忽略obj/debug的方法

小智 59

我通过转到项目解决方案(其构建)发出此错误来解决此问题.

  1. 右键单击项目并卸载项目.
  2. 然后右键单击该项目并编辑.csproj文件.
  3. 查找这些临时(有问题)生成的文件.(参见示例代码)
  4. 从.csproj文件中删除此文件引用.
  5. 右键单击项目并加载项目.
  6. 重建解决方案.
  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" />
Run Code Online (Sandbox Code Playgroud)

  • 我不需要编辑 .csproj 文件,但确实需要卸载、删除 /bin、/obj、所有 .sln 文件以及所有 .suo 和 .csproj.usr 文件中的所有内容。清理和构建,重新加载项目,是g2g。谢谢! (2认同)

Nik*_*nte 37

在StyleCop.Settings文件的解析器块中为这些文件添加一个条目:该值是一个正则表达式,因此可以使用更紧密的匹配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>
Run Code Online (Sandbox Code Playgroud)


小智 14

具有"TemporaryGeneratedFile_"前缀的3个文件由最有可能通过链导入的Microsoft.WorkflowBuildExtensions.targets文件自动生成:

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

它们是在$(IntermediateOutputPath)MSBuild属性指向的中间输出路径下生成的,通常类似于obj\debug.处理有关这些自动生成文件的StyleCop警告/错误的一种方法是告诉StyleCop跳过下面的任何*.cs文件$(IntermediateOutputPath).例如,在项目中包含以下项目:

<ItemGroup>
    <ExcludeFromStyleCop Include="$(IntermediateOutputPath)\**\*.cs" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

ExcludeFromStyleCop是StyleCop.targets文件识别的项目名称,用于在构建期间从分析中排除文件(至少对于StyleCop 4.7).双星**是用于在文件夹下递归搜索的MSBuild语法.

新项目可能会显示在Visual Studio的解决方案资源管理器中.如果这是不合需要的,可以使用"可见"项元数据隐藏它:

<ItemGroup>
    <ExcludeFromStyleCop Include="$(IntermediateOutputPath)\**\*.cs" >
        <Visible>False</Visible>
    </ExcludeFromStyleCop>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

如有必要,可以使用类似方法排除其他文件.我希望有所帮助.