0

TFSビルドでカスタムタスクを作成し、プロジェクトのGlobalAssemblyInfo.csファイルを調べて属性(正確にはAssemblyInformationalVersion)を抽出し、ビルドで作成するzipファイルの名前にその値を使用しました。

<UsingTask TaskName="GetAssemblyInformationalVersion.GetAssemblyInformationalVersionTask"
         AssemblyFile="$(MSBuildExtensionsPath)\GetAssemblyInformationalVersion.dll" />

DLLの.csファイルには、次の2つのプロパティがあります。

[Required]
public String InfoFile { get; set; }
public String InfoVersion { get; set; }

これが私のタスクへの私の呼び出しです:

<GetAssemblyInformationalVersionTask InfoFile="$(Path to file)\GlobalAssemblyInfo.cs" />

私の意図は、プロパティInfoFileを介してアセンブリ情報ファイルを渡し、必要なもの(C#コードが行う)を見つけて、タスクとして実行することでTFSで参照できるようにプロパティInfoVersionに設定することです。原則として、zipファイルの命名に使用するプロパティInfoVersionを使用します。例えば、

"Package.$(some form of reference to InfoVersion).zip"

しかし、私はこれを実際に達成する方法を見つけることができませんでした。

私の質問は次のとおりです。タスクでプロパティのget部分を呼び出すにはどうすればよいですか?この種のことについてオンラインで書かれたものは何も見つからなかったので、簡単なはずですが、どんな助けでも大歓迎です。

4

1 に答える 1

3

カスタムタスクGetAssemblyInformationVersionTaskには、[Output]属性で装飾されたタイプITaskItemのプロパティが必要です。

public class GetAssemblyInformationVersionTask
{
    [Output]
    public ITaskItem Version { get; set; }

    public override bool Execute()
    {
      // code to set Version 
      return true;
    }
}

そうすれば、次のように使用できるようになります。

<GetAssemblyInformationVersionTask InfoFile="$(Path to file)\GlobalAssemblyInfo.cs">
        <Output TaskParameter="Version" ItemName="AssemblyVersion" />
 </GetAssemblyInformationVersionTask>

AssemblyVersionは、タスクのVersionプロパティの値を含むアイテム変数になります。

まだご覧になっていない場合は、MSDNの信頼性の高いビルドのベストプラクティス、パート2で出力パラメーターについて触れています。オンラインでもっと良い例が見つからないかどうかを確認します。

Thomas Ardalは、ここにカスタムタスクの[出力]の別の良いサンプルを持っています。

HTH、

Z

于 2009-09-03T02:48:49.320 に答える