Frage

Ich habe das folgende Szenario bekommt: Eine Anwendung wird über die IDE und über einen Build-Skript gebaut. Der Build-Skript wird bei der Ersteinrichtung (Abrufen Abhängigkeiten Einrichtung environment) verwendet, die Binärdateien und zur kontinuierlichen Integrationsprozess zu erzeugen. Ich möchte die Binärdateien als Assembly haben den Monat und den Tag auf zu bauen, und SVN-Revision auf die Revision. Dies bewirkt, dass die AssemblyInfo.cs bei jeder Revision ändern, was eine Menge Lärm in dem Quellensteuerprotokoll erstellt. Ich kann die Dateien ignorieren, aber dann als Teil des Setup würde ich diejenigen regenerieren müssen.

Ich würde gerne wissen, ob jemand noch andere Ideen hat, oder was tun Sie in diesem Fall.

War es hilfreich?

Lösung

Im Moment bin ich auf eine Lösung angesiedelt von Andy White Antwort inspiriert:

  • AssemblyInfo.cs wird, die durch die Assembly Aufgabe von http://msbuildtasks.tigris.org/ und außerhalb des Source-Control-Baum gehalten.
  • Die Version ist [major]. [Minor]. [Monat] [Tag]. [Svn revision]. Major und Minor werden manuell eingestellt, die anderen werden durch das Build-Skript verwaltet. Die Community-Aufgaben Pack beide Aufgaben beinhaltet notwendig, um die Arbeitskopie svn Revision zu erhalten und Datum.

Der Nachteil:

  • Wenn jemand eine neue Kopie checkt die Setup Ziel des Build-Skript ausgeführt werden muss, sonst Visual Studio wird über fehlende Dateien beschweren. Dies ist ein Problem Ich mag würde in Zukunft entfernen.

Andere Tipps

Ich denke, eine gängige Praxis für AssemblyInfo.cs ist nur als Teil des Build-Prozesses dynamisch zu generieren, anstatt um eine statische Datei zu halten.

Durch die Erzeugung, können Sie alle beliebigen / konfigurierbaren Einstellungen verwenden Sie wollen.

Ich glaube, NAnt eine <asminfo> Aufgabe für diesen Zweck hat. Ich vermute, es ist etwas ähnliches für MSBuild auch. Oder Sie könnten nur eine benutzerdefinierte Datei Generation Skript schreiben, und es verwenden, eine benutzerdefinierte AssemblyInfo.cs in Ihre Build zu schieben.

Wir haben leider nur aktualisieren Assembly am Stamm nach einem RTM / RTW / GA / (was auch immer :) Release-Build.

Unsere Nightly / Beta / RC / QA / (Was auch immer :) Builds nehmen nur eine Kopie der aktualisierten AssemblyInfo.cs (von einer Arbeitskopie auf CI-Server) in ihren entsprechenden Zweig oder einen Tag. Wir verwenden Subversion, und Sie können mit unbestätigten Änderungen an einer Arbeitskopie verzweigen / Tag.

Dies erlaubt uns, sowohl die richtige Version von Assembly für die Nacht / Beta Build im Zweig oder ein Tag, zu halten und nur im Kofferraum berühren Assembly nach einer endgültigen Freigabe stattgefunden hat. Der Build-Server verfügt über einen Schalter, um es zu sagen, das auf dieser Art von Build Stamm zu begehen.

FWIW, wir es alle von MSBuild Scripts fahren, mit unterschiedlichen Werten für Eigenschaften für jeden Projekttyp festgelegt, durchlief von unserem Build-Server (CruiseControl.NET).

[EDIT] Beachten Sie auch, dass die Version der Entwickler von Assembly nicht aktualisiert wird (es sei denn, sie manuell ändern), so dass sie nicht bekommen, den Lärm von modifizierten Assembly auf jedem Build. Wir lassen die Entwickler steuern major.minor , die Build-Server-Steuerelemente Build , und wir verlassen Revision für QA ihr eigenes System zu verbinden (weil es ohnehin von WiX / MSI ignoriert wird) .

Wenn Sie nicht über die geänderten AssemblyInfo.cs überprüfen zurück in die Quellcodeverwaltung, warum gibt es dann ein Geräusch?

Ich würde empfehlen, einen einzigen Wert von Assembly für den gesamten Build verwenden und dass Sie entweder überprüfen in einer einzigen Datei, die Version enthält, und / oder die Build mit der Versionsnummer beschriften. Auf diese Weise werden Sie nicht das Bedürfnis verspüren, in mehreren modifizierten AssemblyInfo.cs Dateien zu überprüfen.

Wir haben auch einen Erzeugungsschritt verwenden, um die Assembly zu erstellen [cs | vb]. Dateien, obwohl wir einfach eine Vorlage Kopie der Datei als Quelle verwenden, und dann einen kleinen Perl-Skript, die Vorlage zu analysieren, ersetzen Sie die Versionszeichenfolge und die endgültige Ausgabe erzeugen.

Das Problem bei diesem System ist, dass VB-Projekte scheinen die Assemblydatei ständig zu laden, was bedeutet, dass das Projekt einen Fehler hat, wenn es zum ersten Mal geladen, noch bevor der Prebuild Schritt ausführen kann die AssemblyInfo.vb Datei zu erstellen. Wir haben keine Lösung für dieses Problem noch nicht gefunden - wenn jemand Einsicht hat, würde ich gerne hören ...

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