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
Ответы
Ответ 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" />
После повторного открытия решения он смог построить все без ошибок.