2009-09-03 34 views
0

我在我的TFS構建中製作了一個自定義任務來檢查我的項目的GlobalAssemblyInfo.cs文件,以便提取一個屬性(AssemblyInformationalVersion是精確的),以便使用它的值命名我用該構建制作的zip文件。如何從TFS構建中的任務獲取屬性?

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

我的DLL的cs文件有以下兩個屬性:

[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" 

但是,我一直無法找到一種方法來實際完成此操作。

我的問題是:如何在我的任務中調用我的屬性的get部分?這似乎應該很容易,因爲我還沒有發現任何關於這種東西在網上寫的東西,但任何幫助將不勝感激。

回答

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將是該項目的變量將包含任務的版本屬性的值。

如果您還沒有看到它,MSDN Best Practices for Reliable Builds, Part 2涉及輸出參數的主題。我會看看我在網上找不到更好的例子。

Thomas Ardal在自定義任務here中有[Output]的另一個很好的示例。

HTH,

ž

+0

我的問題是解決了,現在完全:) 感謝您的回答和指針! (去顯示我有多少吸谷歌的東西,但...) – 2009-09-03 17:03:18

相關問題