2011-09-01 11 views
8

Ho bisogno di leggere AssemblyFileVersion di dll anziché solo Version. Ho provato:attività msbuild per leggere AssemblyFileVersion di dll

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

Lo script viene eseguito ma non emette nulla. Se cambio FileVersion a Version, emette correttamente AssemblyVersion. Come posso ottenere AssemblyFileVersion con il mio script?

risposta

4

Il pacchetto MSBuild Extension ha una proprietà MaxAssemblyFileVersion che potrebbe essere utile.

UPDATE:

Dal documentation che non sembra il compito GetAssemblyIdentity restituisce il FileVersion.

L'uscita voci dal parametro Assemblee contiene i metadati voci di nome Versione PublicKeyToken, e la cultura.

Inoltre, vedere il seguente post StackOverflow.

Read AssemblyFileVersion from AssemblyInfo post-compile

+0

Questa è una vecchia questione ma ho lo stesso bisogno e mi chiedo se questo è stato risolto leggendo la DLL non il file assemblyinfo.cs? –

2

Prendendo in prestito da this answer, sono stato in grado di creare un MSBuild un'attività personalizzata:

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

E poi consumarlo dall'interno di un obiettivo:

<GetFileVersion AssemblyPath="some.dll"> 
    <Output TaskParameter="Version" PropertyName="MyAssemblyFileVersion" /> 
</GetFileVersion> 
<Message Text="File version is $(MyAssemblyFileVersion)" /> 
Problemi correlati