Antlr 有一个流程示例,可用于将生成的代码添加到项目中。这具有显示嵌套在源文件下的文件的优点,尽管添加起来更复杂。
您需要使用要生成的文件添加一个项目组,例如:
<ItemGroup>
<ServiceDescription Include="MyService.txt"/>
</ItemGroup>
然后将要生成的cs文件添加到包含其余源代码的ItemGroup中。
<ItemGroup>
...
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
...etc..
<Compile Include="MyService.txt.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>MyService.txt</DependentUpon> <!--note: this should be the file name of the source file, not the path-->
</Compile>
</ItemGroup>
然后最后添加构建目标以执行代码生成(使用 % 对 ItemGroup 中的每个项目执行命令)。这可以放入一个单独的文件中,以便可以从许多项目中包含它。
<Target Name="GenerateService">
<Exec Command="servicegen.exe -i:%(ServiceDescription.Identity) -o:%(ServiceDescription.Identity).cs" />
</Target>
<PropertyGroup>
<BuildDependsOn>GenerateService;$(BuildDependsOn)</BuildDependsOn>
</PropertyGroup>