Best Practices beim Organisieren einer Visual Studio-Lösung

8

Ich benötige Hilfe bezüglich der Visual Studio-Lösung und der Projektorganisation.

Ich habe eine Lösung mit mehreren Projekten. Alle sind in C # geschrieben und werden als Bibliotheken kompiliert, um von der GUI verwendet zu werden. Einige dieser Bibliotheken haben auch Abhängigkeiten mit anderen. Beispiel: TestExecutive benötigt LoggingFramework, Communications benötigt ebenfalls LoggingFramework.

Was ist die beste Art zu organisieren? Ich denke an einen Ordner Assemblies , um die Binärdateien der Bibliotheken an einem Ort zu speichern. Etwas wie:

%Vor%

Es gibt noch ein anderes Problem. Eines der Projekte verwendet eine native C-DLL. Wo muss ich diese Bibliothek platzieren? Mit der Assembly der Bibliothek oder mit der endgültigen ausführbaren Datei?

BEARBEITEN:

Ok, jetzt nehme ich an, dass das WinForms-Programm läuft. Ich habe Quellcode und Binärdateien gemischt. Welche Funktionen benötige ich, um etwas zu generieren, das ich verteilen kann? Ich meine, mit allen Bibliotheken und Konfigurationsdateien, aber ohne Quellcode. Ich habe dies zuvor mit Nullsoft Installer gemacht, aber ich weiß nicht, ob Visual Studio Ihnen dabei helfen kann.

    
yeyeyerman 17.08.2009, 13:21
quelle

2 Antworten

8

Ein paar Dinge hier:

  1. Wenn ein Projekt von einem anderen abhängt, können Sie diese Abhängigkeit in Visual Studio einrichten. Klicken Sie mit der rechten Maustaste auf ein Projekt und wählen Sie Projektabhängigkeiten ...

  2. Für andere .NET-Assemblies, die NICHT Teil Ihrer Lösung sind (Tools von Drittanbietern usw.), mache ich genau das, was Sie hier gezeigt haben - ich habe einen separaten Ordner parallel zu den Projekten. Dann habe ich die Assembly-Referenz in jedem der Projekte eingerichtet, wobei "Copy Local" auf "true" gesetzt ist und es funktioniert.

  3. Für native C dlls ist es etwas anders. Im reference-Abschnitt des Solution Explorers finden Sie keine direkte Referenz darauf. Der Compiler wird nicht auf die DLL schauen, um Ihre p / invoke Referenzen oder ähnliches zu überprüfen. Sie müssen nur sicherstellen, dass die DLL Teil der Bereitstellung in Ihrem Top-Level-Web- oder winforms-Projekt ist. Es ist eine Inhaltsdatei wie eine CSS-Datei oder ein Bild oder etwas. Fügen Sie es einfach als Datei in das Projekt ein und stellen Sie sicher, dass "Build Action" auf "Content" gesetzt ist, damit Visual Studio die Datei als Teil der Bereitstellung kopieren kann

Clyde 17.08.2009, 13:32
quelle
5

Ich habe meine Lösungsordner etwas anders eingerichtet als Sie. Auf der obersten Ebene habe ich die folgenden Ordner:

%Vor%

Der Build-Ordner enthält Build-Skripts (NAnt, MSBuild usw.). Alle 3rd-Party-Assemblies (oder alles, was ich nicht in der Lösung baue) werden in den lib-Ordner in einem geeigneten Unterordner gestellt. Zum Beispiel habe ich log4net, NUnit, RhinoMocks-Ordner im lib-Ordner, die jeweils die Dateien enthalten, die für diese Abhängigkeit benötigt werden. Der Ordner src enthält die Lösung und alle Projektdateien.

Ich mag diese Struktur, weil sie klar zwischen dem Projektcode und den anderen Dingen unterscheidet, die für das Projekt benötigt werden. Außerdem richte ich normalerweise einige benutzerdefinierte Build-Aufgaben ein, um die resultierenden Assemblies für mein Projekt in einen \ deploy- oder \ lib \ -Ordner zu kopieren. Auf diese Weise müssen Sie nicht im Ordner \ src \ bin \ suchen, um eine gebaute Assembly oder das gesamte Projekt zu erhalten. Dies scheint jedoch etwas über den Rahmen Ihrer Frage hinauszugehen.

Übrigens ... Ich habe diese Struktur nicht selbst erfunden, ich glaube, ich habe angefangen, Baumchirurg und entwickelte meinen Prozess von dort.

    
akmad 17.08.2009 14:39
quelle

Tags und Links