Frage

In letzter Zeit habe ich an ein paar kleinen .NET-Anwendungen arbeiten, die einige gemeinsame Code teilen. Der Code hat einige Schnittstellen zu abstrahieren eingeführt I / O für Unit-Tests nennt.

Ich wollte, dass die Anwendungen als eigenständige EXE-Dateien ohne externe Abhängigkeiten. Dies scheint, wie der perfekte Anwendungsfall für statische Bibliotheken. Kommen Sie zu denken, es Dritte Steuer Anbieter von diesem Modell profitieren könnte.

Gibt es einige versteckte Gemeinheiten mit statischen Bibliotheken, die ich verpasst habe?

Gibt es einen Grund, warum die C # Designer sie gelassen?

Edit: Ich bin mir dessen bewusst ILMerge aber nicht den gleichen Komfort wie statische Bibliotheken bieten

.
War es hilfreich?

Lösung

.NET ist in der Tat unterstützen das moralische Äquivalent eines statischen Bibliothek. Es ist eine NetModule (Dateierweiterung in der Regel genannt ist .netmodule). Lesen Sie mehr darüber in diesem Blog-Eintrag rel="noreferrer"> Erweiterungsmethoden a sind Problem auch. ILMerge ist das bessere Werkzeug, um dies zu bekommen getan.

Andere Tipps

Dies ist nicht direkt mit C # bezogen, sondern auf den gesamten .NET Regenschirm. Sicher, es ist möglich, Baugruppen fusionieren mit ILMerge , aber leider es ist immer noch ein Forschungsprojekt, aber zumindest nutzen seine Lizenz Genehmigungen für kommerzielle Unternehmungen. Andere als die, die Common Language Runtime (CLR) nicht in einer einzigen ausführbaren koalesziert werden, muss die Zielplattform noch .NET installiert werden.

Edit:

Ich schreibe dies, bevor Sie Ihren Beitrag mit ILMerge bearbeitet. Ich könnte falsch sein, aber es gibt keine zusätzlichen Vorteile von .NET-Stil dynamische Verknüpfung zur Laufzeit zu vermeiden. Es ist nichts falsch mit den Satelliten-Baugruppen zusammen mit der ausführbaren Datei setzen. Microsoft empfiehlt nicht, sie im GAC setzen.

Die Verwendung von statischen Libs hat den Nachteil, dass es nicht patchbare von den Laufzeitanbietern (MS) ist.

Wenn Sie zum Beispiel statischen MFC-Libs und eine Securify Ausgabe oder andere Fehler ist in der MFC-statischen Bibliotheken gefunden, MS kann es nicht patchen (der Code ist bereits in der ausführbaren Datei). Mit Shared DLLs ermöglicht eine einfache Patch auf OS-Ebene, ohne Sie darüber sorgen.

Natürlich geteilt Libs hat, hat einen kleinen Nachteil: a. Abhängigkeit genommen wird und sie müssen auf dem System installiert sein

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top