Frage

Alle unsere Projekte in unserem SLN teilen sich eine Versionsinfo.cs, das die Projektversionsnummer enthält

[assembly: AssemblyVersion("0.0.1.0")]
[assembly: AssemblyFileVersion("0.0.1.0")]

Ich möchte die 3 ersten Teile der Versionsnummer statisch definieren und den letzten Teil, den ich als SVN-Revision der Arbeitskopie haben möchte.

Schritt Nummer eins ist das Definieren eines Pre-Build-Ereignisses in VS, das ein cmd-Skript auslöst. Gibt es eine einfache Möglichkeit, die Revision der Arbeitskopie von cmd abzurufen?

Schritt Nummer zwei besteht darin, diese Nummer in die Versionsinfo einzufügen.cs-Datei

Es gibt wahrscheinlich elegantere Möglichkeiten, dies zu tun, wenn Sie eine auf Lager haben, denken Sie daran, dass dies ein Open-Source-Projekt ist und wir keinen ausgefallenen Build-Server oder ähnliches haben.Das Bereitstellungsverfahren besteht darin, das Projekt einfach in den Release-Modus zu versetzen und zu erstellen: D

War es hilfreich?

Lösung 3

hmjd: s lösung war nur die Hälfte dort, wenn Sie jedes Mal in die Datei schreiben, wenn Sie alle Projekte aufbauen, die sich auf die Versionsdatei aufbauen, müssen wieder aufgebaut werden, selbst wenn nichts geändert wurde, habe ich das Skript geändert, um nur in die Datei zu schreiben, wenn es aneue Revisionsnummer generasacodicetagpre.

Andere Tipps

Gibt es eine einfache Möglichkeit, die Revision der Arbeitskopie von cmd zu erhalten?

Es gibt eine ausführbare Datei namens svnversion.exe welches auf der Standardausgabe die Revision druckt.Wenn Sie sicherstellen, dass dies in Ihrem PATH das könnte man so nennen.

Um diese Nummer in die Versionsinfo einzufügen.cs-Datei

Sie könnten das generieren VesionInfo.cs datei vollständig oder teilweise aus einer Batchdatei:

@echo off

FOR /F %%A in ('svnversion') do SET SVN_REV=%%A

echo [assembly: AssemblyVersion("0.0.1.%SVN_REV%")]     >  VersionInfo.cs
echo [assembly: AssemblyFileVersion("0.0.1.%SVN_REV%")] >> VersionInfo.cs

BEARBEITEN:

Batchdatei aktualisiert, um mit Revisionsnummern des Formats fertig zu werden RR, NN:RR und NN:RRM wo NN eine ganze Zahl ist und RR ist die Revision:

@ECHO off

FOR /F "tokens=1,2 delims=:M" %%A in ('svnversion') do SET PART_1=%%A&SET PART_2=%%B

IF NOT DEFINED PART_2 (
SET SVN_REV=%PART_1%
)

IF NOT DEFINED SVN_REV (
SET SVN_REV=%PART_2%
)

ECHO [assembly: AssemblyVersion("0.0.1.%SVN_REV%")]     >  VersionInfo.cs
ECHO [assembly: AssemblyFileVersion("0.0.1.%SVN_REV%")] >> VersionInfo.cs
  • Wenn es Visualstudio ist, ist es Windows
  • Wenn es Windows ist, können Sie Subwcrev von TortoiseSVN verwenden verwenden

      .
    1. Schreibensvorlage von versionInfo.cs in Repository anstelle von der endgültigen Datei, dort wechselhafte Teil der Daten, die durch (angemessen) subwcrev-Keyword ersetzt werden
    2. auf jedem Build-Process-Run Subwcrev, der die endgültige Datei mit den tatsächlichen Daten aus Vorlagen- und WC-Daten schreiben (Vollbuilder kann / gestartet / gestartet / so einfach wie svn export + subwcrev wc-path VersionInfo.cs.tpl VersionInfo.cs)

Herunterladen MSBuild-Community-Aufgabe und installiere es.

Öffne deine .csproj und am Ende (vor Schließung </project> Tag)

Fügen Sie den folgenden Code ein (ändern Sie nicht die <Import> Tag):

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" /> 

Nach dem <Import> tag fügen Sie Folgendes ein:

  <Target Name="BeforeBuild">
      <SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(ProgramFiles)\TortoiseSVN\bin">
          <Output TaskParameter="Revision" PropertyName="Revision" />
      </SvnVersion>
      <FileUpdate Files="Properties\AssemblyInfo.cs" Regex="(\d+)\.(\d+)\.(\d+)\.(\d+)" ReplacementText="$1.$2.$3.$(Revision)" />
  </Target>

Schau dir das Attribut an Werkzeugweg innerhalb des SvnVersion-Tags müssen Sie den Ort identifizieren, an dem sich auf Ihrem Computer der befindet in: svnversion.exe Binärdatei.

Angenommen, Sie haben die TortoiseSVN-Software installiert, der Pfad dazu lautet: C:\ProgramFiles\TortoiseSVN\bin\ Sie können auch die VisualSVN-Binärdateien verwenden (in diesem Fall befindet sich die Binärdatei unter C:\ProgramFiles\VisualSVN\bin\)

Mit dieser Änderung in Ihrem .csproj, in jedem Build-Projekt ruft das MSBuild zuerst die svnversion auf.exe (mit Argument, das aktuelle Lösungsverzeichnis) und die svnversion geben die Revisionsnummer für dieses Repository zurück.Im FileUpdate-Tag sucht MSBuild nach dem regulären Ausdruck-Muster und ersetzt es dann durch die aktuellen Werte für Major, Minor und Build ($ 1, $ 2 bzw. $ 3) und aktualisiert die Revision mit dem variablen Revisionswert

Sie könnten versuchen, Keyword-Ersatzstoffe , um die Anzahl zu ersetzen, wenn Sie beginnen.Sie haben das als Beispiel: generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top