Warum C# keine C++ - Stil statischen Bibliotheken?
In letzter Zeit ich ve wurden arbeiten an ein paar kleine .NET-Anwendungen, die einige gemeinsame code. Der code hat einige Schnittstellen eingeführt zu abstrahieren I/O Anrufe für unit-Tests.
Wollte ich die Anwendungen auf standalone-EXE-Dateien ohne externe Abhängigkeiten. Dies scheint der perfekte Anwendungsfall für statische Bibliotheken. Kommen zu denken, dass der Dritte die Kontrolle der Zulieferer profitieren von diesem Modell zu.
Gibt es einige versteckte Gemeinheiten mit statischen Bibliotheken, die ich verpasst habe?
Gibt es einen Grund, warum die C# - Designer ließ Sie aus?
Edit: ich bin mir dessen bewusst, ILMerge, aber es hat nicht den gleichen Komfort wie statische Bibliotheken.
Du musst angemeldet sein, um einen Kommentar abzugeben.
.NET, hat in der Tat unterstützen das moralische äquivalent zu einer statischen
Bibliothek. Es heißt eine netmodule-Datei (Datei-Erweiterung ist in der Regel
.netmodule). Lesen Sie mehr darüber in diesem blog-post.
Vorsicht, dass es nicht gut unterstützt Visual Studio
build tool chain. Ich denke, extension-Methoden sind
problem als gut. ILMerge ist das bessere Werkzeug, um diese
getan.
Dies ist nicht direkt mit C#, aber das ganze auf .NET Dach. Sicher, es ist möglich, Zusammenführen von Baugruppen mit ILMerge, aber leider ist es immer noch ein Forschungsprojekt, aber zumindest seine Lizenz erlaubt die Nutzung für kommerzielle Unternehmungen. Andere als die, die runtime (CLR) können Sie ergoss sich in einer einzigen ausführbaren Datei, die Ziel-Plattform noch braucht .NET installiert werden.
Edit:
War ich hier tippe, bevor Sie bearbeitet Ihre post mit ILMerge. Ich könnte falsch sein, aber es ist nicht mit zusätzlichen nutzen aus der Vermeidung der .NET-Stil die dynamische Verknüpfung zur Laufzeit. Es ist nichts falsch mit dem setzen der Sat-Baugruppen zusammen mit der ausführbaren Datei. Microsoft nicht empfehlen, setzen Sie in den GAC.
Verwendung von statischen libs hat den Nachteil, dass es nicht gepatcht werden, von der Laufzeit Anbieter (MS).
Zum Beispiel, wenn Sie die Verwendung von statischen MFC-Bibliotheken und eine securify Problem oder einen anderen Fehler gefunden in der statischen MFC-Bibliotheken, die MS kann keine patch-es (der code ist bereits in der ausführbaren Datei). Mit shared Dlls ermöglicht eine einfache patch auf OS-Ebene, ohne dass Sie die Sorge um, dass.
Natürlich mit shared libs hat einen kleinen Nachteil: eine Abhängigkeit ist genommen, und Sie müssen auf dem system installiert sein.