Задача msbuild для чтения AssemblyFileVersion из dll - PullRequest
8 голосов
/ 01 сентября 2011

Мне нужно прочитать AssemblyFileVersion из dll вместо Version. Я попробовал:

<Target Name="RetrieveIdentities">
    <GetAssemblyIdentity AssemblyFiles="some.dll">
        <Output
            TaskParameter="Assemblies"
            ItemName="MyAssemblyIdentities"/>
    </GetAssemblyIdentity>
    <Message Text="%(MyAssemblyIdentities.FileVersion)" />
</Target>

Сценарий выполняется, но ничего не выводится. Если я поменяю FileVersion на Version, то он правильно выведет AssemblyVersion. Как мне получить AssemblyFileVersion с моим скриптом?

Ответы [ 2 ]

5 голосов
/ 02 мая 2016

Заимствовав из этого ответа , я смог создать пользовательскую задачу MSBuild:

<UsingTask
  TaskName="GetFileVersion"
  TaskFactory="CodeTaskFactory"
  AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">

  <ParameterGroup>
    <AssemblyPath ParameterType="System.String" Required="true" />
    <Version ParameterType="System.String" Output="true" />
  </ParameterGroup>
  <Task>
    <Using Namespace="System.Diagnostics" />
    <Code Type="Fragment" Language="cs">
      <![CDATA[
      Log.LogMessage("Getting version details of assembly at: " + this.AssemblyPath, MessageImportance.High);

      this.Version = FileVersionInfo.GetVersionInfo(this.AssemblyPath).FileVersion;  
    ]]>
    </Code>
  </Task>
</UsingTask>

, а затем использовать ее из целевого объекта:

<GetFileVersion AssemblyPath="some.dll">
  <Output TaskParameter="Version" PropertyName="MyAssemblyFileVersion" />
</GetFileVersion>
<Message Text="File version is $(MyAssemblyFileVersion)" />
4 голосов
/ 01 сентября 2011

Пакет MSBuild Extension имеет свойство MaxAssemblyFileVersion , которое может быть полезно.

ОБНОВЛЕНИЕ:

Из документации не похоже, что задача GetAssemblyIdentity возвращает FileVersion.

Элементы, выводимые параметром Assemblies, содержат записи метаданных элементов с именами Version, PublicKeyToken и Culture.

Также см. Следующую запись StackOverflow.

Чтение AssemblyFileVersion из AssemblyInfo после компиляции

...