我刚刚为FluentMigrator API编写了一个代码生成器应用程序,它发出了未知数量的C#类文件。我希望编译代码生成器,运行它以发出C#类,然后将新的C#文件添加到现有的C#项目,然后编译最终的解决方案。
将代码生成的C#文件添加到项目中的最佳方法是什么?
答案 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>