wake-up-neo.net

Shared AssemblyInfo für die einheitliche Versionierung der Lösung

Ich habe über diese Technik gelesen: http://blogs.msdn.com/b/jjameson/archive/2009/04/03/3/shared-Assembly-info-in-visual-studio-projects.aspx

Im Grunde bedeutet dies, ein SharedAssemblyInfo.cs mit Versionsinformationen über die Assembly zu erstellen und diese Datei als Link zu allen Projekten der Projektmappe hinzuzufügen, sodass sich die eigentliche Datei nur an einem Speicherort auf der Festplatte befindet.

Meine Frage beschäftigt sich mit 2 Szenarien:

  1. Bestehende Lösung, die diesen Mechanismus nicht verwendet: Gibt es eine Möglichkeit, ShareAssemblyInfo problemlos zu allen Projekten hinzuzufügen? (sagen wir, ich habe eine Lösung mit 50 Projekten).

  2. Beim Erstellen eines neuen Projekts wird standardmäßig eine neue AssemblyInfo.cs erstellt. Ich möchte jedoch auch automatisch eine Verknüpfung zu SharedAssemblyInfo herstellen.

Gibt es dafür eine Lösung? Was ist die übliche Praxis?

64
lysergic-acid

Der erste Punkt könnte mit einem einfachen Texteditor gelöst werden, der mehrere Dateien gleichzeitig verarbeiten und suchen und ersetzen kann. Öffnen Sie einfach alle Ihre csproj darin und ersetzen Sie den String <Compile Include="Properties\AssemblyInfo.cs" /> mit

<Compile Include="..\SharedAssemblyInfo.cs">
  <Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile>

Alternativ können Sie ein solches Dienstprogramm schreiben:

var files = Directory.GetFiles(yourSolutionDir, "*.csproj", SearchOption.AllDirectories);
foreach (var f in files) {
  string contents = File.ReadAllText(f);
  string result = contents.Replace("<Compile Include=\"Properties\\AssemblyInfo.cs\" />", putSecondStringHere_ItIsJustTooLong); // :)
  File.WriteAllText(f, contents);
}

Was die zweite Frage angeht ... Sie könnten einen Blick auf Benutzerdefinierte Visual Studio-Projektvorlagen werfen, aber ich bin mir nicht sicher, ob es sich lohnt. Sie sollten IMO einen Test schreiben, der dies stattdessen überprüft. Es wird viel einfacher und das Ergebnis ist fast das gleiche.

UPD: Informationen zum Schreiben von Tests zum Überprüfen von Lösungs-/Projektdateien anhand einiger benutzerdefinierter Regeln. Grundsätzlich ist das sln/csproj-Format einfach genug, um ohne großen Aufwand analysiert zu werden. Wenn Sie also SharedAssemblyInfo.cs in jedes Projekt einbinden möchten, analysieren Sie einfach die csproj's und prüfen Sie das. Setzen Sie dann diesen Checker in Ihren Build-Server und führen Sie ihn bei jedem Build aus. Wir arbeiten derzeit mit einem solchen System, und es kostet ungefähr zwei Tage, um zu schreiben, aber es hat uns viel mehr gespart (wir haben dort ausgefeiltere Regeln und Multi-Solution-Projekte, daher hat sich der Aufwand gelohnt).

Ich werde hier nicht ausführlich über dieses Einchecken schreiben (es ist nicht so kurz), aber ich werde in Kürze einen Blogbeitrag darüber schreiben - höchstwahrscheinlich bis Ende dieser Woche. Also, wenn Sie interessiert sind, überprüfen Sie einfach mein Blog bald :)

UPD: _ ​​ Here ist es.

48
Ivan Danilov

Es ist möglich, in VS 2010 auf eine gemeinsam genutzte Assembly-Infodatei zuzugreifen. Ashish Jain hat einen guten Blogbeitrag dazu: Gemeinsame Verwendung der Assembly-Version in einer Lösung .

Nachdem Sie die gemeinsam genutzte Assembly-Infodatei auf Lösungsebene erstellt haben, lauten die Anweisungen für die Verknüpfung mit einem Projekt aus einem Projekt:

  1. Klicken Sie mit der rechten Maustaste auf das Projekt, in dem Sie das Shared .__ hinzufügen möchten. Baugruppendatei und wählen Sie Hinzufügen -> Vorhandenes Element ... 

  2. Wählen Sie die Datei "SharedAssemblyInfo.cs" aus dem Lösungsordner aus. 

  3. Klicken Sie anstelle von Hinzufügen auf den Pfeil neben Hinzufügen und klicken Sie auf "Hinzufügen als ". Verknüpfung" 

  4. Ziehen Sie die hinzugefügte verknüpfte Datei neben AssemblyInfo.cs in der .__-Datei herunter. derselbe Ordner. 

  5. Wiederholen Sie die Schritte 1 - 4 für alle Projekte, für die Sie Shared .__ hinzufügen möchten. Assembly-Datei.

Ich habe es versucht und es funktioniert.

55
Simon Tewsi

Ich habe eine Anwendung erstellt, um die Dateiversion automatisch zu erhöhen.

  1. Download Bewerbung
  2. fügen Sie der Befehlszeile des Pre-Build-Ereignisses die folgende Zeile hinzu

C:\temp\IncrementFileVersion.exe $ (SolutionDir)\Properties\AssemblyInfo.cs Erstellen Sie das Projekt Um es einfach zu halten, wirft die App nur Meldungen, wenn ein Fehler vorliegt So überprüfen Sie die Dateiversion in 'Assembly Information'

Hinweis: Sie müssen die Lösung in Visual Studio für die Schaltfläche "Assembly Information" erneut laden, um die Felder auszufüllen. Die Ausgabedatei enthält jedoch die aktualisierte Version.

Für Anregungen und Anfragen senden Sie mir bitte eine E-Mail an [email protected]

0
Telson Alva

Dies funktioniert nicht für Lösungen, die sowohl C # - als auch F # -Projekte haben. c # project kann nicht auf eine freigegebene f # -Datei verweisen und umgekehrt.

Die einzige Möglichkeit besteht in diesem Fall darin, ein separates Projekt zu erstellen und von anderen Projekten darauf zu verweisen

0