Проблема с динамически генерируемыми файлами C # в msbuild - PullRequest
0 голосов
/ 03 ноября 2008

У меня есть исходный XML-файл, который используется для создания файлов C #, которые затем компилируются как часть проекта.
В настоящее время у меня есть цель BeforeBuild, которая запускает мой конвертер XML в C #.
Проблема заключается в том, что к моменту запуска шага BeforeBuild старые файлы уже сохраняются системой сборки, поэтому новые файлы игнорируются.

Как я могу обойти это? Кажется, что Преобразования были бы способом, но они ограничены в том, что они могут сделать.

Ответы [ 3 ]

1 голос
/ 19 мая 2009

Я полагаю, что ваше "хранимое системой сборки" можно перевести как ItemGroup, содержащую файлы .cs, которые вы хотите скомпилировать, генерируется при чтении файла msbuild, а не когда выполняется цель компиляции. У вас есть несколько вариантов:

  1. <CreateItem> см. Задание CreateItem
  2. <Output> см. Элемент вывода

Надеюсь, это поможет.

0 голосов
/ 03 ноября 2008

Я думаю, вам нужно показать нам немного вашего файла правил / сборки. У вас должно быть правило / зависимость для файла cs, в котором в качестве зависимости используется xml.

Я не уверен, что вы подразумеваете под "сохранением в системе сборки"

Внимательно проверьте ваши правила на наличие ошибок / упущений.

0 голосов
/ 03 ноября 2008

Ну, у нас здесь что-то похожее. Мы генерируем .cs из XML-файла, используя .tt. Оба файла являются частью определенного csproj. Переходя свойства-> BuildEvents на csproj, выдает этот небольшой фрагмент в командной строке события Pre-build:

del "$(ProjectDir)MyCsFile.cs"
copy /b /y "$(ProjectDir)\MyXmlFile.xml" "$(TargetDir)"
"$(ProjectDir)tt.bat" "$(ProjectDir)MyTemplateFile.tt"

Понятия не имею, пригодится ли вам что-нибудь, надеюсь, этого будет достаточно в качестве последнего обходного пути.

...