MSBuild任务不会导致编译生成的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

我一直在尝试编写一个MSBuild任务,将CoCo/R.ATG文件“编译”成C#文件,然后将其编译成可执行文件,这是为了替换预编译事件。
我已设法使.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)