Ich habe bemerkt, dass ich eine Referenz nicht nur zu einer DLL hinzufügen kann, sondern auch zu einer EXE in Visual Studio und auf alle Klassen in der EXE zugreifen kann, als ob es eine DLL wäre.
Gibt es einen Grund, eine DLL zu erstellen oder kann ich genauso gut auf die EXE verweisen?
Ich frage, weil ich oft .net Programme schreibe, die ich sowohl unter Windows als auch unter Mac OS laufe, und meine übliche Lösung ist, eine DLL mit der Funktionalität und dann zwei GUIs zu erstellen, eine für jedes Ziel.
Allerdings scheint es mir jetzt so, als könnte ich einfach eine Windows-Version meiner App schreiben und dann diese Windows-Version (die EXE-Datei) zu meinem Mac-Projekt hinzufügen und auf die Windows-EXE statt auf eine DLL verweisen. Es hat auch den zusätzlichen Vorteil, dass ich die Windows-Version aus dem Mac-Ordner ausführen kann, ohne eine weitere Datei hinzuzufügen.
Gibt es einen guten Grund, es nicht so zu machen?
Wenn Sie möchten, können Sie all Ihre Assemblies als ausführbare Dateien (.exe) erstellen und auf sie verweisen. Es gibt keinen Unterschied für .NET, wenn eine Assembly als ausführbare Datei (.exe) oder Klassenbibliothek (.dll) kompiliert wird.
Der einzige Unterschied ist, dass eine ausführbare Datei ein zusätzliches Format für eine portable ausführbare Datei (PE) und einen Header hat, so dass sie es können auf Windows-Systemen ausgeführt werden. In erster Linie wird diese Kopfzeile verwendet, um die CLR Runtime zu starten.
Hinweis : Sie können DLL-Assemblies auch als Portable Class Libraries
Es hängt davon ab, wie viel Wartung / Aktualisierung Sie den Anwendungen antun würden. Ich mag die Sauberkeit des ursprünglichen Modells, bei dem die Benutzeroberfläche auf der Plattform basiert und die DLLs die Klassen enthalten, die gemeinsam genutzt werden. Ich würde es für Wartung / Refactoring weniger verwirrend finden.
Ich sehe mindestens zwei Gründe, warum man noch teilen sollte /
Tags und Links .net dll exe assemblies