4

CoCo / R .ATGファイルをC#ファイルに「コンパイル」するMSBuildタスクを作成しようとしています。このファイルは、実行可能ファイルにコンパイルされます。これは、ビルド前のイベントを置き換えるためのものです。
.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>

私はMSBuildに完全に慣れていないので、アドバイスやアドバイスをいただければ幸いです。

4

1 に答える 1

1

私が見つけた解決策の 1 つは、次の変更を行い、ターゲット内に 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) をビルド アクション: なしでマークする必要もあります。

于 2012-09-22T07:39:21.517 に答える