Подтвердить что ты не робот

TemporaryGeneratedFile_ [guid] в /obj/debug break build

У меня есть 3 временных файла, созданных в obj/debug:

например.

  • 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 служебной ссылкой, которые численно не совпадают с тремя файлами.

Любые указатели?

Изменить: Если я изменил фреймворк с 4.5 до 4, эти файлы исчезнут, и сборка будет успешной.

Моя версия StyleCop - это 4.4, я более чем открыт для поиска способа заставить его игнорировать obj/debug

4b9b3361

Ответ 1

В блоке парсеров файла 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>

Ответ 2

Я решил эту проблему, перейдя к решению проекта (чья сборка) давала эту ошибку.

  • щелкните правой кнопкой мыши по проекту и выгрузите проект.
  • Затем щелкните правой кнопкой мыши проект и отредактируйте файл .csproj.
  • Ищите эти временные (проблемные) сгенерированные файлы. (см. пример кода)
  • удалите ссылки на этот файл из файла .csproj.
  • Щелкните правой кнопкой мыши проект и загрузите проект.
  • Восстановите решение.
  • Хорошо теперь идти...

они выглядят так в файле 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" />

Ответ 3

3 файла с префиксом "TemporaryGeneratedFile_" автоматически генерируются файлом 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>

ExcludeFromStyleCop - это имя элемента, распознанное файлом StyleCop.targets для исключения файлов из анализа во время сборки (по крайней мере для StyleCop 4.7). Двойной звездочкой ** является синтаксис MSBuild для поиска рекурсивно в папке.

Новый элемент может отображаться в обозревателе решений в Visual Studio. Если это нежелательно, его можно скрыть, используя метаданные "Видимые":

<ItemGroup>
    <ExcludeFromStyleCop Include="$(IntermediateOutputPath)\**\*.cs" >
        <Visible>False</Visible>
    </ExcludeFromStyleCop>
</ItemGroup>

Аналогичный подход может быть использован для исключения других файлов, если это необходимо. Надеюсь, что это поможет.

Ответ 4

Я помогал коллеге, который добавил новый проект в наше основное решение VS и получил эти же 3 ошибки. Я рассмотрел предложенные выше шаги с ним, но не успел его исправить. После этого я обнаружил, что он пропустил один из шагов, которые мы выполняем при добавлении нового проекта в наше решение, которое использует Code Analysis и StyleCop. Он забыл добавить файл Settings.StyleCop в свой проект:)

Ответ 5

Недавно я столкнулся с этой проблемой из ниоткуда.

Для меня мне удалось преодолеть это, открыв файлы .csproj для каждого проекта, а затем удалите следующую строку:

<Import Project="$(SolutionDir)\CodeAnalize\Microsoft.StyleCop.targets" />

После повторного открытия решения он смог построить все без ошибок.