2015-09-30 4 views
5

Wir haben viele Bibliotheken, die in einem CI erstellt werden, die bei jedem Build Vorabversionen bereitstellen. Andere Projekte hängen davon ab und aktualisieren sie automatisch während des Builds.Was steuert die Specific Version-Eigenschaft einer Referenz in einem NuGet-Paket?

Die Verweise werden jedoch mit der spezifischen Version = true festgelegt, was bedeutet, dass das Erhöhen der Versionsnummer auf diesen DLLs zum Fehlschlagen des Builds führt.

Wie kann ich die Einstellung der Eigenschaft steuern?

Antwort

4

Sie können das Verhalten von NuGet nicht ändern, ohne den Quellcode zu ändern. NuGet will always sets SpecificVersion to true beim Hinzufügen einer Nicht-GAC-Assembly aus Visual Studio heraus.

Sie müssten ein Post-Build-Skript ausführen, um die Referenzen zu korrigieren oder manuell zu ändern.

Nicht genau, wie Sie die Projekte in Ihrem CI-Server aktualisieren. Wenn Sie NuGet.exe update project.csproj verwenden, wird das auf das neueste NuGet-Paket aktualisiert und SpecificVersion wird nicht auf true gesetzt. Die Befehlszeilenanwendung unterstützt jedoch keine PowerShell-Skripts oder Inhaltsdateien. Es werden nur Referenzen aktualisiert. Dies setzt auch voraus, dass ein Update verfügbar ist, andernfalls wird der Verweis nicht geändert.

+0

Ich benutze NuGet Wiederherstellung von der Kommandozeile, um alle Pakete für meine Lösung zu erhalten. Die Pakete sind versioniert wie 1.0.0-neuestes, wo keine der Versionsnummer für einen neuen Build geändert wird, konnte ich nicht von der Befehlszeile aus arbeiten. Die DLL bekommt eine vierte Versionsnummer, die die svn-Nummer ist. Diese Anzahl wird für jeden Build erhöht. – Julius

+0

In Ihrer Antwort sagen Sie, nuget wird immer SpecificVersion auf true setzen, aber später dann sagen Sie, wenn Sie Nuget.exe update project.csproj verwenden und dann auf das neueste NuGet-Paket updaten und SpecialVersion nicht setzen (vorausgesetzt, Sie haben SpecificVersion gemeint) um wahr zu sein. Wenn Sie SpecificVersion nicht setzen, bedeutet das, dass der Standardwert verwendet wird, der wahr zu sein scheint. –

+0

Die Kommandozeile nuget verhält sich in Visual Studio anders als nuget 2. –