2009-09-03 14 views
0

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

<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#コード)を探し出し、InfoVersionプロパティに設定して、タスクとして実行してTFSで参照できるようにします。原則として、InfoVersionプロパティを使用してZIPファイルの名前を付けます。たとえば、

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

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

私の質問は次のとおりです。自分のタスクで自分のプロパティの取得部分を呼び出すにはどうすればよいですか?私はこの種のものについてオンラインで書かれたものは何も見つけられていないので、それは簡単なはずですが、どんな助けも高く評価されます。

答えて

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 Best Practices for Reliable Builds, Part 2が出力パラメータの対象に触れています。もっと良い例をオンラインで見つけることができないかどうかがわかります。

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

HTH、

Z

+0

は私の問題は今、完全に解決さ:) 答えてくれてありがとうとポインタを!! (しかし、私はグーグルで何かを吸うのを見せてくれるが...) –

関連する問題