我对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#文件。我的问题是,如果我从我的repo中删除File1和File2.cs文件并运行build,则构建将失败,因为由于某种原因,我的XSD任务正在进行的文件在查找源文件时不会生成编译。
我认为BeforeTargets="Build"
会导致文件在执行任何其他操作之前生成。有任何想法吗?我还试过BeforeTargets="Compile"
答案 0 :(得分:1)
有关如何挂钩代码生成逻辑的更多详细信息,请参阅https://mhut.ch/journal/2015/06/30/build_time_code_generation_msbuild。
或者最简单的方法是在BeforeBuild
目标中执行此操作,MSBuild在任何其他目标之前执行。