Ich möchte, dass die Versionseigenschaft meiner Anwendung für jeden Build erhöht wird, bin mir jedoch nicht sicher, wie diese Funktionalität in Visual Studio (2005/2008) aktiviert werden soll. Ich habe versucht, die AssemblyVersion als 1.0 anzugeben. * Aber ich bekomme nicht genau das, was ich will.
Ich verwende auch eine Einstellungsdatei. Bei früheren Versuchen, als die Assembly-Version geändert wurde, wurden meine Einstellungen auf die Standardeinstellungen zurückgesetzt, da die Anwendung in einem anderen Verzeichnis nach der Einstellungsdatei gesucht hat.
Ich möchte in der Lage sein, eine Versionsnummer in Form von 1.1.38 anzuzeigen. Wenn ein Benutzer ein Problem feststellt, kann ich die von ihm verwendete Version protokollieren und ihn auffordern, ein Upgrade durchzuführen, wenn er eine alte Version hat.
Eine kurze Erklärung, wie die Versionierung funktioniert, wäre ebenfalls willkommen. Wann werden die Build- und Revisionsnummer erhöht?
quelle
Antworten:
Mit dem "Eingebauten" Zeug können Sie nicht, da die Verwendung von 1.0. * Oder 1.0.0. * Die Revision und die Build-Nummern durch einen codierten Datums- / Zeitstempel ersetzt, was normalerweise auch ein guter Weg ist.
Weitere Informationen finden Sie in der Assembly Linker- Dokumentation im Tag / v.
Verwenden Sie zum automatischen Inkrementieren von Zahlen die AssemblyInfo-Aufgabe:
AssemblyInfo-Aufgabe
Dies kann so konfiguriert werden, dass die Build-Nummer automatisch erhöht wird.
Es gibt 2 Fallstricke:
Das Abrufen der Versionsnummer ist dann ganz einfach:
Und um dies zu verdeutlichen: In .net oder zumindest in C # ist der Build tatsächlich die DRITTE Nummer, nicht die vierte, wie einige Leute (zum Beispiel Delphi-Entwickler, die an Major.Minor.Release.Build gewöhnt sind) erwarten könnten.
In .net ist es Major.Minor.Build.Revision.
quelle
VS.NET setzt die Assembly-Version standardmäßig auf 1.0. * Und verwendet beim automatischen Inkrementieren die folgende Logik: Der Build-Teil wird auf die Anzahl der Tage seit dem 1. Januar 2000 und der Revisionsteil auf die Anzahl der Sekunden seit Mitternacht festgelegt. Ortszeit, geteilt durch zwei. Siehe diesen MSDN-Artikel .
Die Assembly-Version befindet sich in einer Datei assemblyinfo.vb oder assemblyinfo.cs. Aus der Datei:
quelle
January 1st, 2000
Ich habe festgestellt, dass es gut funktioniert, einfach das Datum des letzten Builds wie folgt anzuzeigen, wo immer eine Produktversion benötigt wird:
Anstatt zu versuchen, die Version von etwas wie dem folgenden zu erhalten:
quelle
Welches Versionsverwaltungssystem verwenden Sie?
Fast alle von ihnen haben eine Art $ Id $ -Tag, das beim Einchecken der Datei erweitert wird.
Normalerweise verwende ich irgendeine Form von Hackery, um dies als Versionsnummer anzuzeigen.
Die andere Alternative ist die Verwendung des Datums als Build-Nummer: 080803-1448
quelle
[Visual Studio 2017, .csproj- Eigenschaften]
Um Ihre PackageVersion / Version / AssemblyVersion-Eigenschaft (oder eine andere Eigenschaft) automatisch zu aktualisieren, erstellen Sie zunächst eine neue
Microsoft.Build.Utilities.Task
Klasse, die Ihre aktuelle Build-Nummer erhält, und senden Sie die aktualisierte Nummer zurück (ich empfehle, nur für diese Klasse ein separates Projekt zu erstellen).Ich aktualisiere die major.minor-Nummern manuell, lasse aber MSBuild die Build-Nummer automatisch aktualisieren (1.1. 1 , 1.1. 2 , 1.1. 3 usw. :)
Rufen Sie dann Ihren kürzlich erstellten Task on MSBuild-Prozess auf und fügen Sie den nächsten Code in Ihre .csproj-Datei ein:
Wenn Sie die Visual Studio Pack-Projektoption
BeforeTargets="Build"
auswählen (wechseln Sie einfach zu, um die Aufgabe vor dem Erstellen auszuführen), wird der RefreshVersion-Code ausgelöst, um die neue Versionsnummer zu berechnen, und dieXmlPoke
Aufgabe aktualisiert Ihre .csproj-Eigenschaft entsprechend (ja, die Datei wird geändert).Bei der Arbeit mit NuGet-Bibliotheken sende ich das Paket auch an das NuGet-Repository, indem ich dem vorherigen Beispiel nur die nächste Build-Aufgabe hinzufüge.
c:\nuget\nuget
Hier habe ich den NuGet-Client (denken Sie daran, Ihren NuGet-API-Schlüssel durch Aufrufen zu speichernnuget SetApiKey <my-api-key>
oder den Schlüssel in den NuGet-Push-Aufruf aufzunehmen).Nur für den Fall, dass es jemandem hilft ^ _ ^.
quelle
Vor einiger Zeit habe ich eine schnelle und schmutzige Exe geschrieben, die die Versionsnummern in einer Assemblyinfo aktualisiert. {Cs / vb} - Ich habe auch rxfind.exe (ein einfaches und leistungsstarkes Regex-basiertes Such-Ersetzungs-Tool) verwendet, um dies zu tun Aktualisierung über eine Befehlszeile als Teil des Erstellungsprozesses. Ein paar andere hilfreiche Tipps:
quelle
Wenn Sie eine automatisch inkrementierende Nummer wünschen, die bei jeder Kompilierung aktualisiert wird, können Sie VersionUpdater aus einem Pre-Build-Ereignis verwenden. Ihr Pre-Build-Ereignis kann die Build-Konfiguration überprüfen, wenn Sie dies vorziehen, sodass die Versionsnummer nur für einen Release-Build erhöht wird (z. B.).
quelle