MSBuild 运行 XSD 文件编译前的任务

MSBuild run XSD Task before files get compiled

我是 MSBuild 的新手,我正在尝试将 XSD 任务发送到 运行,这样我需要 运行 我的应用程序的 C# 文件每次都会刷新我们 运行 构建。

我的构建任务如下所示。

<UsingTask TaskName="XSD" AssemblyName="Microsoft.Build.CppTasks.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<Target Name="GenerateCSFromXSD" BeforeTargets="Build">
  <ItemGroup>
    <XSDInput Include="XML\File1.xsd"/>
    <XSDInput Include="XML\File2.xsd"/>
  </ItemGroup>

  <XSD GenerateFromSchema="classes" Language="CS" Sources="@(XSDInput)" />
</Target>

这很好用。每次我 运行 构建时,它都会为 File1 和 File 2 输入重新生成一个新的 C# 文件。我的问题是,如果我从我的存储库中删除 File1 和 File2.cs 文件,然后 运行 构建,构建将失败,因为由于某种原因,我的 XSD 任务正在制作的文件没有生成在它寻找我的源文件进行编译的时候。

我认为 BeforeTargets="Build" 会在执行任何其他操作之前生成文件。有任何想法吗?我也试过 BeforeTargets="Compile"

您可以参考 https://mhut.ch/journal/2015/06/30/build_time_code_generation_msbuild 了解有关如何挂钩代码生成逻辑的更多详细信息。

或者最简单的方法是在 BeforeBuild 目标中执行此操作,MSBuild 在任何其他目标之前执行。