Проблема с динамически генерируемыми файлами C # в msbuild
Вопрос
У меня есть исходный XML-файл, который используется для создания файлов C #, которые затем компилируются как часть проекта.
В настоящее время у меня есть цель BeforeBuild, которая запускает мой конвертер XML в C #.
Проблема заключается в том, что к моменту запуска шага BeforeBuild старые файлы уже сохраняются системой сборки, поэтому новые файлы игнорируются.
Как я могу обойти это? Кажется, что Преобразования были бы способом, но они ограничены в том, что они могут сделать.
Решение
Я думаю, ваш & сохранен системой сборки " можно перевести как ItemGroup, содержащую файлы .cs, которые вы хотите скомпилировать, генерируется при чтении файла msbuild, а не когда выполняется цель компиляции. У вас есть несколько вариантов:
<Ол><CreateItem>
см. задача CreateItem <Output>
см. элемент вывода Надеюсь, это поможет.
Другие советы
Ну, у нас здесь что-то похожее. Мы генерируем .cs из XML-файла, используя .tt. Оба файла являются частью определенного csproj. Свойства перехода - & Gt; BuildEvents на csproj дает этот небольшой фрагмент в командной строке события Pre-build:
del "$(ProjectDir)MyCsFile.cs"
copy /b /y "$(ProjectDir)\MyXmlFile.xml" "$(TargetDir)"
"$(ProjectDir)tt.bat" "$(ProjectDir)MyTemplateFile.tt"
Понятия не имею, пригодится ли это вам, надеюсь, этого будет достаточно в качестве последнего обходного пути.
Я думаю, вам нужно показать нам немного вашего файла правил / сборки. У вас должно быть правило / зависимость для файла cs, в котором в качестве зависимости используется xml. Р>
Я не уверен, что вы подразумеваете под " хранится системой сборки "
Внимательно проверьте свои правила на наличие ошибок / упущений.