2013-06-13 9 views
13

Dies ist meine Nuspec-Datei, um das Paket von Teamcity generiert zu bekommen. Die Version wird durch die Variable teamcity eingestellt.Teamcity-Variable Ersatz in Nuspec-Datei

<?xml version="1.0"?> 
<package > 
    <metadata> 
    <id>Company.Name</id> 
    <version>$version$</version> 
    <title>Title</title> 
    <authors>My Name</authors> 
    <owners>We are the owners</owners> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>Support</description> 
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes> 
    <copyright>Copyright 2013</copyright> 
    <tags>Core</tags> 
    <dependencies> 
     <dependency id="Core.Assembly" version="[1.0.$teamcity.build.id$]" /> 
    </dependencies> 
    </metadata> 
</package> 

Wie würde ich die Version mit der aktuellen Teamcity Build ID Nummer ersetzen? Versucht sowohl mit als auch %teamcity.build.id%

Hat nicht funktioniert. Versucht mit $version$ auch. Die Version wird im Versionstag des Pakets korrekt ersetzt, nicht jedoch in der Abhängigkeit.

Ich möchte die gleiche Version des Pakets verwenden, das im aktuellen Build ist, also haben sie die gleiche Build-Nummer.

Irgendwelche Gedanken werden helfen.

Antwort

11

Behoben mit AssemblyInfo-Patcher von Teamcity Build Features.

zu beheben,

Konfigurationsschritte -> Schritte beim Aufbau. -> Build-Funktion hinzufügen (Button)

hinzufügen Assembly Patcher und der Version 1.0 geben% teamcity.build.id% und löste das Problem.

Haben die abhängigen Bibliotheken bei der Version mit der $ version $ gelöst.

Ich hoffe, es hilft.

10

Sie müssen es nicht durch TeamCity-Variablen ersetzen. Verwenden Sie den Schalter -version, etwa wie folgt:

Auf diese Weise wird die Nuspec-Version zur Laufzeit überschrieben.

+2

abhängigen Bibliotheken müssen die gleiche Version. Mit Assembly Patcher behoben. – Kannaiyan

3

Ich löste es, indem ich einfach [$ version $] in meine Abhängigkeit setzte.

+0

AssemblyInfo Patcher Versionen auch Ihre DLL. Andernfalls wird dll auf einer Version sein und das nugget Paket wird auf einer anderen Version sein. – Kannaiyan

+1

Das hat für mich funktioniert. Der Schlüssel besteht darin, sicherzustellen, dass der Schalter "-Version" für den Befehl "nugget pack" verwendet wird. – craftworkgames

2

In TeamCity 9.1 Sie können die Versionsnummer im Build-Schritt "Nuget Pack" überschreiben.

enter image description here

+0

Das Konfigurieren kann schwierig sein, wenn Sie für alle Projekte dieselben Versionen verwenden möchten. Dies bedeutet, dass Sie für jede nuspec anstelle eines zentralen Standorts konfigurieren müssen. – Kannaiyan