我一直在尝试编写一个 MSBuild 任务来将 CoCo/R .ATG 文件“编译”成 C# 文件,然后将其编译成可执行文件,这是为了替换预构建事件。
我已经设法让 .ATG -> .cs 进程正常工作,但是由于生成的 .cs 文件没有被编译,所以有些不对劲。
如果我再次修改 .ATG 文件,“旧”.cs 文件似乎会被编译,然后生成新文件。
我很确定我遗漏了一些东西,这些东西会通知构建过程的其余部分这些文件已更改。
这是我在 Visual Studio 2010 项目中包含的目标定义。
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<AvailableItemName Include="BuildATG" />
</ItemGroup>
<PropertyGroup>
<CoreBuildDependsOn>
BuildATGTarget;
$(CoreBuildDependsOn)
</CoreBuildDependsOn>
</PropertyGroup>
<Target Name="BuildATGTarget" Inputs="@(BuildATG)" Outputs="@(BuildATG -> '%(RelativeDir)Parser.cs')">
<Exec Command="Coco.exe %(BuildATG.Identity)" Outputs="%(BuildATG.RelativeDir)Parser.cs" />
</Target>
</Project>
我对 MSBuild 完全陌生,所以任何建议/指针都将不胜感激。