В конце я добавил новую ItemGroup в мой файл csproj со ссылками на каждый файл XML. Я дал каждому элементу имя элемента Preprocess:
<ItemGroup>
<Preprocess Include="Xml\MySourceXmlFile1" />
<Preprocess Include="Xml\MySourceXmlFile2.xml" />
</ItemGroup>
Позже в файле проекта я переопределил цель BeforeBuild, чтобы она преобразовывала каждый элемент предварительной обработки в исходный файл C # с тем же именем, что и файл XML:
<Target Name="BeforeBuild"
Inputs="@(Preprocess)"
Outputs="@(Preprocess->'$(ProjectDir)%(Filename).cs')">
<Exec Command="xsltproc -o %22$(ProjectDir)%(Filename).cs%22 %22MyTransform.xsl%22 @(Preprocess)" />
</Target>
Обратите внимание, что аргументы xsltproc должны быть экранированы с% 22.
Теперь исходный файл C # создается только в случае изменения XML. Я получил подход от этого сообщения на форуме.