MSBuild任务不会导致编译生成的c#文件
我一直在尝试编写一个MSBuild任务,将CoCo/R.ATG文件“编译”成C#文件,然后将其编译成可执行文件,这是为了替换预编译事件。MSBuild任务不会导致编译生成的c#文件,c#,visual-studio-2010,msbuild,C#,Visual Studio 2010,Msbuild,我一直在尝试编写一个MSBuild任务,将CoCo/R.ATG文件“编译”成C#文件,然后将其编译成可执行文件,这是为了替换预编译事件。 我已设法使.ATG->.cs进程正常工作,但由于无法编译生成的.cs文件,因此出现了一些问题。 如果我随后再次修改.ATG文件,“旧的”.cs文件似乎会被编译,然后生成新的文件。 我很确定我遗漏了一些东西,这些东西将通知构建过程的其余部分这些文件已经更改 这是我在VisualStudio2010项目中包含的目标定义 <Project ToolsVersi
我已设法使.ATG->.cs进程正常工作,但由于无法编译生成的.cs文件,因此出现了一些问题。
如果我随后再次修改.ATG文件,“旧的”.cs文件似乎会被编译,然后生成新的文件。
我很确定我遗漏了一些东西,这些东西将通知构建过程的其余部分这些文件已经更改 这是我在VisualStudio2010项目中包含的目标定义
<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>
建立目标;
$(CoreBuildDependsOn)
我对MSBuild完全陌生,因此任何建议/指针都将不胜感激。我找到的一个可能的解决方案是进行以下更改并在目标中添加一个ItemGroup
<Target Name="BuildATGTarget" Inputs="@(BuildATG)" Outputs="@(BuildATG -> '%(RelativeDir)Parser.cs')">
<Exec Command="Coco.exe %(BuildATG.Identity)" Outputs="%(BuildATG.RelativeDir)Parser.cs" />
<ItemGroup>
<Compile Include="%(BuildATG.RelativeDir)Parser.cs" />
<Compile Include="%(BuildATG.RelativeDir)Scanner.cs" />
</ItemGroup>
</Target>
为了避免生成中出现重复文件,还需要在Visual Studio 2010项目中使用生成操作:无标记文件(Parser.cs和Scanner.cs)