2017-05-04 4 views
0

Hey Ich habe versucht, meine csproj zu ändern, um den .net-Core-Stil zu verwenden. Das Projekt ist eine Klassenbibliothek, aus der ich ein Nugget-Paket erzeuge. Alles scheint mit den Veränderungen gut zu funktionieren, wenn ich den Wert als hart codierten Wert angebenDotnet Pack berücksichtigt keine dynamischen Variablen für Versionsattribut

<Version>1.0.1.1</Version> 

Jedoch hat ich eine freigegebene Assembly-Datei zu verwenden, versuchen die Version von einigen Projekten im sln zu fahren. Das funktioniert gut für die DLL, aber nicht für das erzeugte nugget-Paket. Laufen dotnet pack hat das gleiche Problem.

Ich versuchte ein paar Dinge, um dies zum Laufen zu bringen, aber am überraschendsten scheint zu sein, wie es Variablen ignoriert. z.B.

InitialTargets="SetVersion"

<Target Name="SetVersion"> 
<PropertyGroup> 
    <Version>1.0.1.1</Version> 
</PropertyGroup> 

<Version>$(Version)</Version> 

Die DLLs erzeugt haben alle Version 1.0.1.1 oder was auch immer die Variable gesetzt. Das nuget-Paket erzeugt jedoch nur die Version 1.0.0.0.

Die genau gleiche Ausgabe, wenn ich angeben:

<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute> 

Und lassen Sie es die Version aus der SharedAssembly.cs Datei lesen. Die DLLs sind die richtige Version, aber nicht das Paket nuget.

Ich weiß, dass ich nur die Version angeben konnte, wenn dotnet pack Aufruf aber hatte gehofft, dass zu vermeiden und haben es richtig nur geschehen, wenn die Build von VS

Antwort

1
läuft

Versuchen <PackageVersion> zu verwenden: Dies ist die MSBuild Eigenschaft so es haben innerhalb einer <PropertyGroup> Gruppe gehen:

<PropertyGroup> 
    <PackageVersion>1.0.1.1</PackageVersion> 
</PropertyGroup> 
+0

Erstaunlich! Das funktioniert. Danke: D –

Verwandte Themen