2016-06-23 10 views
3

Ich habe einen Befehl in den AfterBuild-Abschnitt der Projektdatei .csproj meines Projekts hinzugefügt, der automatisch ein NuGet-Paket erstellt, wenn es sich um eine Release-Konfiguration handelt. Dieser Teil, wie im folgenden Codefragment angegeben, funktioniert gut.Wie "Nuget Add" als ein Post-Build-Ereignis in Visual Studio ausführen?

<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Release'"> 
    <Exec Command="nuget pack $(ProjectFileName) -IncludeReferencedProjects -Prop Configuration=Release"></Exec> 
</Target> 

Ich möchte nun einen zusätzlichen nuget add $(NugetFileName) -source c:\NugetLocal Befehl hinzufügen, um die NuGet Paket zu meinem lokalen Repository zu kopieren. Leider existiert das Makro $(NugetFileName) nicht. Ich könnte das $(TargetName) Makro kombiniert mit .nupkg verwenden, aber der Paketname enthält die Assemblyversionsnummer, für die es nicht scheint, dass es ein handliches Makro gibt. Gibt es eine Möglichkeit, dies ohne MSBuild-Skripts zu tun?

Antwort

2

Es gibt eine answer to a previous question, die zeigt, wie die Versionsnummer im Afterbuild-Ereignis verfügbar gemacht wird. Kombinieren Sie das mit dem, was Sie bereits hatten, können Sie den Befehl nuget add mit der Versionsnummer ausführen:

<Target Name="AfterBuild" Condition=" '$(Configuration)' == 'Release'"> 
    <GetAssemblyIdentity AssemblyFiles="$(TargetPath)"> 
     <Output TaskParameter="Assemblies" ItemName="AssemblyVersion" /> 
    </GetAssemblyIdentity> 
    <Exec Command="nuget pack $(ProjectFileName) -IncludeReferencedProjects -Prop Configuration=Release"></Exec> 
    <Exec Command="nuget add $(TargetName).%(AssemblyVersion.Version).nupkg -Source C:\NugetLocal"></Exec> 
</Target>