Programmspezifische Verweise auf Visual Studio-Projekte aktualisieren

8

Ich möchte die Verweise in den Projekten in meiner Visual Studio-Lösung programmatisch aktualisieren.

Ich habe ungefähr 15 Projekte in meiner Lösung und wenn ich entwickle / debugge, möchte ich, dass die Referenzen auf die Projekte innerhalb der Lösung zeigen.

Als Teil meiner Freigabeprozedur muss ich manchmal eine Kopie eines Projekts erstellen und dann die Referenzen aktualisieren, um auf gebaute DLLs in einem bestimmten Ordner zu zeigen.

Ich kann die Struktur der Projektdateien und die Funktionsweise der Referenzen in ihnen ausarbeiten, und ich überlege mir, ein Befehlszeilentool zu erstellen, um die Projektdateien zu analysieren und Referenzen nach Bedarf zu ändern.

Meine Fragen sind:
1. Klingt das sinnvoll zu tun? 2. Hat jemand Erfahrung damit und / oder wie handhaben sie den Wechsel zwischen Entwicklungs- und Freigabemodi? 3. Hat jemand Bibliotheken, die sich mit der Analyse von Visual Studio-Projektdateien befassen?

Erklärung:

Danke für die Antworten. Vielleicht sollte ich einige Situationen klären, in denen ich diese verwenden möchte.

a) Meine Bewerbung enthält 15 Projekte. Ich versuche, die Lösung für das, woran ich gerade arbeite, so klein wie möglich zu halten, also sage ich, dass ich 5 Projekte in meiner Lösung habe. Ich muss jetzt eines der Projekte debuggen / entwickeln, die nicht in der Lösung sind, also füge ich dieses Projekt hinzu, aber ich muss: - Legen Sie die Referenzen in den ursprünglichen Projekten so fest, dass sie auf Projektreferenzen und nicht auf kompilierte DLLs verweisen - Ändern Sie die Referenzen im neu hinzugefügten Projekt, um auf die entsprechenden Projektreferenzen zu zeigen.

Ich möchte, dass mein Werkzeug dies automatisch macht und die einzige Art, wie ich das weiß, ist die Manipulation der Projektdateien

b) Als Teil einer Service Pack-Erstellungsprozedur nehme ich eine Kopie eines der Projekte, führe die notwendigen Codeänderungen durch und baue mit Visual Studio. Um dies zu tun, muss ich alle Verweise auf die kompilierten DLLs ändern

    
Gary Joynes 03.07.2009, 19:50
quelle

6 Antworten

9

Ich denke, ein besserer Ansatz wäre die Verwendung bedingter Blöcke für Ihre Referenzen innerhalb der Projektdatei direkt. Dann müssen Sie nur ein bestimmtes Flag während des Msbuild für den Build "release" setzen und es werden die richtigen Referenzen aufgenommen.

Zum Beispiel

%Vor%     
JaredPar 03.07.2009 19:57
quelle
1

Tiger, Tiger ROAR !!!

Dies verwendet den DTE und VSProject für programmatische Hinzufügeverweise. Ich habe den Code für die Mehrheit der Erklärung kommentiert. Aber um hinzuzufügen, habe ich eine Menge anderer Extrareferenzen geworfen, weil ich ein bisschen faul bin. Aber sortiere einfach mit Visual Studio und du solltest in Ordnung sein. Wenn es aus irgendeinem Grund nicht kompiliert, fühlen Sie sich frei, mich anzuschreien.

%Vor%     
Terrance 16.12.2010 16:05
quelle
1

Ich glaube nicht, dass es eine einfache Antwort auf Ihre erste Frage gibt. In der Regel würde ich empfehlen, diese Situation zu vermeiden. Es ist schwierig, manuell zu handhaben, und der Code, um es zu verwalten, ist nicht trivial.

Das heißt, ich habe bei meinem Job eine Situation erlebt, in der ich das Problem einfach nicht umgehen konnte. In unserem Fall haben wir daran gearbeitet, ein SDK zu veröffentlichen, das eine Reihe von Beispielprojekten enthalten musste. Die "Entwicklungs" -Version dieser Projekte verwendete sowohl Projektreferenzen als auch Verweise auf Bibliotheken von Drittanbietern.

Das bringt uns zu # 3, was im Grunde ja ist. Ich habe tatsächlich ein Open-Source-Projekt mit einer Bibliothek, einem einfachen Windows-Dienstprogramm und einer NAnt-Erweiterung veröffentlicht, um Projektverweise automatisch auf DLL-Referenzen zu ändern . Tatsächlich behandelt es auch das Verschieben dieser Bibliotheken von Drittanbietern in denselben lokalen Ordner und aktualisiert diese Verweise in der Projektdatei.

Diese Lösung ist nicht perfekt und es gibt viele Verbesserungen, die ich gerne hinzufügen würde, aber es funktioniert für unsere Situation. Ein Teil unseres Releaseskripts, der allesamt in NAnt ist, führt diesen Prozess aus, um alle Referenzen auf einen relativen Pfad zu tauschen. Dann können wir das ganze Setup leicht bündeln. Eines Tages werde ich vielleicht die Zeit bekommen, eine MSBuild-Aufgabe zusammen mit dem Projekt hinzuzufügen.

Noch einmal, ich denke, es ist das Beste, dies so weit wie möglich zu vermeiden, aber wenn du wie ich stecken bleibst - sollte der Code, den ich veröffentlicht habe, zumindest helfen.

    
Tom Stephens 20.03.2013 15:20
quelle
0

Klingt nach einer seltsamen Situation.

Mein Vorschlag ist das.

  1. Teilen Sie die Projekte mit vorgefertigten Versionen in eine separate Lösung auf. Lassen Sie alle zu

    bauen

    \ assemblies \ fromsource

  2. Kopieren Sie die vordefinierten in

    \ assembly \ prebuilt

  3. Bevor Sie die restlichen Projekte entwickeln, kopieren Sie ein Verzeichnis in

    \ assembly \ development

  4. Ändern Sie Ihre Projekte so, dass sie auf die Versionen in \ assembly \ development verweisen.

Sie erstellen also Ihr Produkt immer mit vorkompilierten Binärdateien in einem bekannten Ordner, sodass Sie Ihr Projekt nie ändern müssen. Aber Sie können beliebig zwischen verschiedenen Versionen wechseln.

Ändern Sie für Bonuspunkte ein Prebuild-Ereignis, um die DLLs zu kopieren, bevor die Dinge beginnen, und lassen Sie den Quellordner je nach Konfiguration variieren. Fügen Sie dann neben DEBUG und RELEASE eine PREBUILT-Konfiguration hinzu.

    
Steve Cooper 03.07.2009 20:04
quelle
0

Ich denke, wenn Sie die Microsoft.Build.BuildEngine-Bibliothek verwenden, können Sie die Projekte nach dem Laden programmgesteuert bearbeiten.

Ссылка

    
mcintyre321 06.04.2011 09:39
quelle
0

Es gibt ein Tool in der visuellen Studio-Galerie, das Ihnen vielleicht helfen könnte.

Es kann Referenzen in Ihrer Lösung durch Projekte ersetzen, wenn Sie sie hinzufügen, und umgekehrt, wenn Sie sie entfernen.

Ссылка

    
Djabx 27.09.2016 09:19
quelle

Tags und Links