Wie können Sie Eigenschaften zwischen mehreren Visual Studio-Projekten freigeben? (besonders C # -Projekte)

8

Es ist nervig, die Eigenschaften mehrerer Visual Studio-Projekte manuell synchron zu halten. Wie können Sie Eigenschaften zwischen mehreren Projekten teilen?

Bearbeiten: Ich beziehe mich auf Eigenschaften wie bedingte Kompilierungssymbole, Behandlung von Warnungen und Fehlern usw., dh Dinge, die Sie auf den Registerkarten Projekt- & gt; Eigenschaften konfigurieren oder durch Bearbeiten der Projekt-XML-Datei.

Ähnliche Fragen wurden bereits früher gestellt, siehe: 1 , 2 und 3 . In meinem Verständnis waren die Antworten jedoch C ++ - spezifisch. Ich suche eine Antwort für C # -Projekte. Zögern Sie jedoch nicht, sich für andere Arten von Projekten (Visual Basic etc.) zu verantworten, wenn Sie die Trennung klarstellen, weil jemand anders als ich interessiert sein könnte.

Dieser Blogpost schlägt eine Lösung für das Problem vor, aber ich würde etwas einfacheres bevorzugen.

Auch können Sie zumindest einen Teil des Problems auf folgende Weise lösen (beachten Sie, dass ich es zwar nicht getestet habe, obwohl ich es getestet habe):

Erstellen Sie eine AssemblyInfo.cs-Datei mit den Baugruppenattributen, die Sie freigeben möchten. Verknüpfen Sie diesen vorhandenen Artikel in den einzelnen Projekten. Verwenden Sie die ursprüngliche (lokale) AssemblyInfo.cs und legen Sie dort projektspezifische Baugruppenattribute ab. Leider scheint das Überschreiben von Attributen nicht zu funktionieren, und die Verwaltung der Attribute über die GUI ist jetzt begrenzt.

    
Marco Eckstein 11.09.2010, 12:41
quelle

2 Antworten

4

Für solche Dinge bevorzuge ich ein separates Klassenbibliotheksprojekt mit einer (oder mehreren) statischen Klassen, die die (statischen) Eigenschaften speichern. Fügen Sie dann aus jedem Projekt, das diese Eigenschaften synchronisieren muss, einen Verweis auf dieses Projekt hinzu, und alle diese Projekte haben die gleichen Werte und müssen nur an einer Stelle geändert werden.

Nehmen wir zum Beispiel an, dass ich die gleiche App in Web- und Desktop-Form habe. Dinge wie Verbindungszeichenfolgen und ähnliches müssen für beide gleich sein. Also werde ich drei Projekte erstellen:
MyProject.Web (Webanwendung)
MyProject.Desktop (Windows Formularanwendung)
MyProject.Common (Klassenbibliothek)
Dann füge ich eine neue statische Klasse in Common namens Eigenschaften mit einer statischen Eigenschaft namens ConnectionString hinzu, die die Verbindungszeichenfolge zurückgibt.
Ich füge dann eine Referenz zu Common in Web und Desktop hinzu, und wenn ich auf die Verbindungszeichenfolge von irgendwelchen von ihnen zugreifen möchte, verwende ich Common.Properties.ConnectionString.

    
Yandros 11.09.2010 12:58
quelle
1

Wir verwenden die .vsprops-Dateien sehr intensiv, um Makros zu teilen, die zwischen unseren nativen Projekten definiert sind.

Jemand, der genau die gleiche Frage stellt, wie Sie die Idee hatten, der Lösung ein "leeres" Visual C ++ - Projekt hinzuzufügen, damit die Vsprops-Datei und die Eigenschaften importiert werden könnten, wäre für den Rest der Lösung allgemein sichtbar. Wenn es nicht zu ekelhaft klingt, kann ich herausfinden, wie es funktioniert hat.

    
Andy Dent 11.09.2010 15:41
quelle