2009-06-10 9 views
18

Ich habe ein automatisiertes Build-System mit CruiseControl. Ich benutze den SvnRevisionLabeller um den Versions-String zu benutzen. Mit dieser Zeichenfolge kann ich nant verwenden, um AssemblyInfo.cs zu aktualisieren. Wenn ich es erstelle, hat es die korrekte Build-Zeichenfolge. Ich kann dieses CC-Label auch verwenden, um das Subversion-Repository zu markieren.Sollte AssemblyInfo.cs in der Versionskontrolle platziert werden?

so ausgerichtet, alles ist
- CCNet Build-Label
- Executable (Montagehinweise)
- Version Control (subverson tag)

Jetzt, wo ich ein Problem habe, ist, wenn ich versuchen will eine neu zu erstellen altes Bild aus dem Repository. Da AssemblyInfo.cs nicht der Versionskontrolle unterliegt, sondern eine generierte Datei, wenn ich nun versuche zu bauen, werden die Versionsinformationen nicht mit denen übereinstimmen, die bei der Erstellung dieser Version des Repositorys mit CruiseControl verwendet wurden. Ich möchte in der Lage sein, genau das gleiche Bild zu erzeugen, unabhängig davon, ob es während des Builds von CC oder zu einem späteren Zeitpunkt beim Auschecken aus Subversion erstellt wurde.

Ich weiß, dass es oft nicht empfohlen wird, aber sollte ich die assemblyInfo.cs-Datei nach jedem Build einchecken, damit wenn ich später von einem Svn-Check-Out Build die richtige Versionsinformation verwendet wird?

Danke, Liam

Antwort

2

Ich habe es immer eingecheckt. In der Tat Ich glaube, das ist das Standardverhalten mit Team System Quellcodeverwaltung ist.

+0

Ich benutze Subversion und CrusieControl.NET. Ich baue mit einem NAnt-Skript. Alles, was ich gelesen habe, ist, dass AssemblyInfo.cs eine Ausgabe ist, die während des Buildprozesses generiert wird.So ist die Build-Sequenz ist: - CCNET (SVN-Trigger durch einen Check-in @say Repository-Version 100) NAnt genannt msbuild AssemblyInfo.cs genannt afgter Build erstellt wird Muss ich jetzt-Check-in AssemblyInfo.cs ? Wenn das eingecheckt wäre, wäre das dann Rev. 101. Mein Ziel, AssemblyInfo.cs mit der Build-Revision zu vergleichen, ist also nicht erfüllt. Wie mache ich das? –

+0

Ich glaube, der Grund, warum Sie AssemblyInfo.cs in Ihrem Fall nicht einchecken möchten, ist, dass Ihr CI-System es erzeugt. Bei einem normalen Build einschließlich der Art, wie TFS-Build-Server es tun, wird die AssemblyInfo.cs eingecheckt und nicht für jeden Build generiert. – majinnaibu

7

Entweder nicht Version AssemblyInfo.cs überhaupt, oder setzen Sie "Entwickler-Version" von ihnen in das Repository und haben CruiseControl.Net svn-revert sie nach dem Build (ich mache das später, so dass Builds auf Entwicklern Workstations sind leicht löschbar von den "offiziellen" heruntergeladen von CruiseControl.Net).

Um die Build-Labels später wiederzugeben, müssen Sie den Rebuild bereits durchführen, indem Sie MSBuild/NAnt per Hand aufrufen, einfach CCNetLabel auf den entsprechenden Wert setzen und Sie erhalten die gleichen Assembly-Versionen wie beim build wird von CruiseControl.Net aufgerufen (MSBuild: /p:CCNetLabel=1.4.2.333, NAnt: -D:CCNetLabel=1.4.2.333).

7

Ich benutze eine CommonAssemblyInfo.cs-Datei, die ich in jedem Projekt eine Verknüpfung hinzufügen.

Das einzige Attribut, das ich in dieser Datei habe, ist AssemblyFileVersion, und CC.Net/Msbuild aktualisiert die Version bei jedem Build.

Stellen Sie sicher, dass jedes Projekt, das CommonAssemblyInfo.cs enthält, keine doppelten Attribute in AssemblyInfo.cs aufweist.

Wenn Sie den CC.Net-Quellcode auschecken, sehen Sie, dass sie so konfiguriert sind.

0

Wir haben ein MSBuild-Skript, das alle benötigten AssemblyInfo.cs-Dateien vor dem Build generiert. Auf diese Weise kann ich auch die SVN-Revisionsnummer in den Assembly-Versionen verwenden. Die AssemblyInfo.cs-Dateien werden nicht in SVN eingecheckt (sie werden ignoriert, so dass sie die Leute nicht stören), aber vor dem Erstellen generiert (egal, ob es ein automatisches Build-Skript oder von VS ist).

Ich liefern auch eine Batch-Datei, um die AssemblyInfo.cs-Dateien Generation zu kümmern, so dass die Entwickler nicht mit den Details kümmern müssen.

Verwandte Themen