Проблема с динамически генерируемыми файлами C # в msbuild

StackOverflow https://stackoverflow.com/questions/259428

  •  06-07-2019
  •  | 
  •  

Вопрос

У меня есть исходный 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.

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

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top