Ich habe ein Hilfsprojekt, das ich in allen von mir erstellten Anwendungen verwende. Es enthält einige Erweiterungsmethoden und eine Reihe allgemeiner Hilfsklassen, Steuerelemente usw. Ich aktualisiere / erweitere das Hilfsprojekt von Zeit zu Zeit. Dies sind normalerweise kleine und unabhängige Projekte, und ich bin die einzige Person, die an allen arbeitet.
Ich habe zwei Ansätze ausprobiert
- Fügen Sie .cs-Dateien direkt (Als Link hinzufügen) zu jedem Projekt hinzu, in dem ich sie verwende
- Kompilieren Sie es als DLL und fügen Sie es als Verweis hinzu
Ich sehe einige Vor- und Nachteile dieser Ansätze.
Der erste:
- ist einfacher, weil die Hilfsklassen in die exe-Datei kompiliert werden, daher kann ich oft sehr einfach nur eine einzelne .exe-Datei bereitstellen, die gut funktioniert. Da ich als Link hinzufüge, kann ich ziemlich sicher sein, dass die Hilfedateien immer die neueste Version sind, wenn ich ein Projekt erstelle, das den Helfer verwendet.
- ist noch einfacher, da ich die Dateien trennen kann, sodass meine Erweiterungsmethoden, die unter .NET 4.0 einwandfrei ausgeführt werden, getrennt von denen referenziert werden können, für die .NET 4.5 erforderlich ist. Dies bedeutet, dass die App als Ganzes unter .NET 4.0 ausgeführt werden kann
- Ermöglicht das Debuggen des Codes mit allen Vorteilen von Haltepunkten usw. usw.
- scheint nicht 'best practice' zu sein
Der zweite:
- scheint der richtige Ansatz zu sein, aber:
- Ich muss eine separate DLL-Datei bereitstellen, was für Benutzer aus irgendeinem Grund sehr viel schwieriger ist (sie geben meine Programme normalerweise ohne die DLL frei, die dann beim Start abstürzt).
- Da es zu einer einzigen DLL kompiliert wird, ist die höchste Version von .NET erforderlich. Viele meiner Benutzer verfügen nicht über .NET 4.5, und dies ist nur für einige Elemente meiner Helferklasse erforderlich. Dies bedeutet, dass ich einige Leute zwingen kann ihre Systeme ohne Grund zu aktualisieren
- Ich muss auch sicherstellen, dass ich bei jedem Update eines meiner Programme auch die DLL-Datei übergebe - auch wenn ich nicht weiß, ob sie seit der letzten Version geändert wurde oder nicht (es hätte sein können, aber es ist) könnte genauso gut die selbe Version sein). Ich kann keinen einfachen Weg finden, dies festzustellen, ohne die Versionsnummer der Baugruppe zu verfolgen, was zusätzliche Arbeit bedeutet. Fürs Erste, wenn ich meine Programme aktualisiere, liefere ich nur aktualisierte exe, und ich mag es klein und unauffällig zu halten.
Also, was ist der eigentliche Vorteil für die Verwendung der DLL-Datei hier? Bitte beachten Sie, dass ich der einzige Bearbeiter aller Anwendungen und Hilfedateien bin.
Zur Verdeutlichung: Die Apps sind normalerweise sehr klein, während der in den Hilfsklassen enthaltene Code für alle von ihnen generisch ist (einige einfache Zeichenfolgenvergleiche, Pfade oder XML-Operationen usw.).
Eigentlich hat mir gerade jemand klar gemacht, dass es eine dritte Option gibt. Da ich den Hilfecode in einem separaten Projekt habe, kann ich dieses Projekt zu Lösungen für jede meiner separaten Anwendungen hinzufügen. Dies funktioniert ähnlich wie "Als Link hinzufügen" für einzelne Dateien, außer ich füge nur ein einziges Projekt hinzu ... Aber Wie Doc Brown bemerkt hat, bedeutet dies im Wesentlichen, dass die .dll-Datei trotzdem zum Projekt hinzugefügt werden muss ...
Eine weitere Möglichkeit, die DLL-Dateien nicht zu verwenden, ist die Möglichkeit, aktiv über die Hilfsklasse zu debuggen ...