生成C#文件的MSBuild或NAnt脚本,将它们添加到项目并编译项目

时间:2014-02-06 00:05:44

标签: visual-studio msbuild nant

我刚刚为FluentMigrator API编写了一个代码生成器应用程序,它发出了未知数量的C#类文件。我希望编译代码生成器,运行它以发出C#类,然后将新的C#文件添加到现有的C#项目,然后编译最终的解决方案。

将代码生成的C#文件添加到项目中的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

鉴于我们从您的帖子中得知,可能有几种方法。

你有一个API会生成一些类文件,并希望将它集成到你的构建过程中,这样你就可以进行API调用来生成新的类文件,然后将这些类文件合并到你的构建中。

如果您的可执行文件将输出文件发送到其当前工作目录中,您可以使用Exec任务在$(IntermeidateOutputPath)中运行命令,以免弄乱项目的源代码树:

<Exec Command="MyExe.exe " WorkingDirectory="$(IntermediateOutputPath)\AutoGenClasses\" />

按照此命令,您可以将这些输出类附加到默认编译组中:

<ItemGroup>
  <Compile Include="$(IntermediateOutputPath)\AutoGenClasses\**\*.cs" />
</ItemGroup>

现在您可能希望控制何时发生这种情况,因此您将此代码嵌入到单独的<Target />中,并在构建发生之前安排它。

<Target Name="AutoGenClasses" BeforeTargets="Compile">
  <Message Text="Starting the AutoGenClasses task..." Importance="high" />
  <Exec Command="MyExe.exe " WorkingDirectory="$(IntermediateOutputPath)\AutoGenClasses\" />
  <ItemGroup>
    <Compile Include="$(IntermediateOutputPath)\AutoGenClasses\**\*.cs" />
  </ItemGroup>
  <Message Text="... completed the AutoGenClasses." Importance="high" />
</Target>