我有一个源 XML 文件,用于创建 C# 文件,然后将其编译为项目的一部分。
目前我有一个 BeforeBuild 目标,它运行我的 XML 到 C# 转换器。
问题是,在运行 BeforeBuild 步骤时,旧文件似乎已被构建系统存储,因此新文件被忽略了。
我怎样才能解决这个问题?似乎转换将是一种方式,但它们的功能有限。
我猜您的“由构建系统存储”可以翻译为包含您希望编译的 .cs 文件的 ItemGroup 是在读取 msbuild 文件时生成的,而不是在执行编译目标时生成的。你有几个选择:
<CreateItem>
请参阅CreateItem 任务<Output>
见输出元素我希望这有帮助。
好吧,我们这里有类似的东西。我们使用 .tt 从 xml 文件中生成 .cs。这两个文件都是特定 csproj 的一部分。在 csproj 上执行 properties->BuildEvents 在 Pre-build event 命令行中给出了这个小片段:
del "$(ProjectDir)MyCsFile.cs"
copy /b /y "$(ProjectDir)\MyXmlFile.xml" "$(TargetDir)"
"$(ProjectDir)tt.bat" "$(ProjectDir)MyTemplateFile.tt"
不知道这对您是否有用,我希望它可能足以作为最后的解决方法。
我认为您需要向我们展示一些您的规则/构建文件。您应该有一个以 xml 作为依赖项的 cs 文件的规则/依赖项。
我不确定“由构建系统存储”是什么意思
仔细检查您的规则是否有错误/遗漏。