Как получить свойство из задачи в сборке TFS?

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

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

Тем не менее, я не смог найти способ действительно сделать это.

Мой вопрос: как я могу получить часть своей собственности в моей задаче? Кажется, что это должно быть легко, так как я не нашел ничего написанного об этом в Интернете, но любая помощь будет высоко ценится.

1 ответ

Решение

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

У Томаса Ардала есть еще один хороший пример [Вывода] в пользовательском задании.

НТН,

Z

Другие вопросы по тегам