2009-09-03 2 views
0

Я создал пользовательскую задачу в моей сборке TFS, чтобы проверить файл моего проекта GlobalAssemblyInfo.cs, чтобы извлечь атрибут (AssemblyInformationalVersion, если быть точным), чтобы использовать его значение для именования zip-файла, который я создаю с помощью сборки.Как получить свойство из задачи в сборке TFS?

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

файл .cs для моей DLL имеет следующие два свойства:

[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, должна иметь свойство на ней типа ITaskItem, которое украшено атрибутом [Output].

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 затрагивает тему выходных параметров. Я посмотрю, не могу ли я найти лучшие примеры в Интернете.

У Томаса Ардала есть еще один хороший образец [Output] в пользовательской задаче here.

НТН,

Z

+0

Моя проблема теперь решена в совершенстве :) Спасибо за ответ и указатели !! (показывает, насколько я сосать вещи в Google, хотя ...) –