2012-05-22 4 views
6

Ich versuche zu erstellen/push nuget-Paket durch Visual Studio Build-Prozess wie erläutert here.Access-Version von AssemblyInfo in MSBuild

Gebäude Paket ist einfach:

<Exec WorkingDirectory="$(ProjectDir)" Command="$(NuGetApp) pack $(ProjectFile) -OutputDirectory $(Deploy) -Verbose -Prop Configuration=Release"/> 

I .nupkg Datei in $ (Deploy) Ordner.

aber in der Lage sein, es zu schieben, muss ich $ (Assembly), es zu benutzen in:

<Exec Command="$(NuGetApp) push $(ProjectName)$(AssemblyVersion) -s $(NugetServer) $(NugetKey)" /> 

I XMLRead versucht, den Wert zu holen, aber Wert in NugetSpecFile ist "$ version $" statt Version von AssemblyInfo.cs.

<XmlRead XPath="/package/metadata/version" XmlFileName="$(NuSpecFile)"> 
     <Output TaskParameter="Value" PropertyName="AssemblyVersion" /> 
    </XmlRead> 

Wie kann ich auf die Version zugreifen, damit ich sie in "nuget push" verwenden kann?

Antwort

11

Das werde ich es tun:

<PropertyGroup> 
    <MyAssemblies>somedll\the.dll</MyAssemblies> 
    </PropertyGroup> 

<Target Name="RetrieveIdentities"> 
    <GetAssemblyIdentity 
     AssemblyFiles="$(MyAssemblies)"> 
     <Output 
      TaskParameter="Assemblies" 
      ItemName="MyAssemblyIdentities"/> 
    </GetAssemblyIdentity> 

    <Message Text="Files: %(MyAssemblyIdentities.Version)"/> 
    </Target> 

Altered von hier: MSBuild Task to read version of dll