Frage

Ich arbeite an einem Modul für ein CMS.Dieses Modul wird als Klassenbibliotheks-DLL verteilt.

Ich habe mehrere Dienstprogrammbibliotheken, die ich in diesem Modul verwenden möchte.Gibt es überhaupt eine Möglichkeit, diese Bibliotheken statisch zu verknüpfen, sodass ich nicht mehrere DLLs verteilen muss (wodurch ich meine Dienstprogrammbibliotheken separat verteilen muss)?

Ich möchte nur eine DLL haben.

War es hilfreich?

Lösung

Sie können Ihre vielen DLLs mit ILMERGE zusammenführen:

http://research.microsoft.com/~mbarnett/ILMerge.aspx

Habe es selbst noch nicht probiert.Ich hoffe es hilft.


Hier herunterladen:
http://www.microsoft.com/downloads/details.aspx?familyid=22914587-B4AD-4EAE-87CF-B14AE6A939B0&displaylang=en

Kurze Beschreibung (von der Download-Seite)
ILMerge ist ein Dienstprogramm zum Zusammenführen mehrerer .NET-Assemblys zu einer einzigen .NET-Assembly.Es funktioniert sowohl mit ausführbaren Dateien als auch mit DLLs und verfügt über mehrere Optionen zur Steuerung der Verarbeitung und des Formats der Ausgabe.Weitere Informationen finden Sie in der Begleitdokumentation.

Andere Tipps

Wenn Sie ILMerge nicht verwenden möchten, lesen Sie diese Seite:

http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

Anmerkung der Redaktion:Jeffrey Richter empfiehlt, Ihre DLLs als Ressourcen in die EXE-Datei zu kopieren (Zeigen Sie für jede DLL-Datei, die Sie hinzufügen, deren Eigenschaften an und ändern Sie ihre „Build-Aktion“ in „Embedded Resource“.).Dann ist ein benutzerdefinierter Klassenlader erforderlich, damit die ausführbare Datei funktioniert (Zur Laufzeit kann die CLR die abhängigen DLL-Assemblys nicht finden, was ein Problem darstellt.Um dies zu beheben, registrieren Sie beim Initialisieren Ihrer Anwendung eine Rückrufmethode beim ResolveAssembly-Ereignis der AppDomain).

Stellen Sie sicher, dass Sie die ändern resourceName string, um auf Ihre tatsächlichen Ressourcen zu verweisen.(z.B.ändern AssemblyLoadingAndReflection zu Ihrem Projektnamen hinzufügen.)

Die kurze Antwort darauf ist nein!Sie können während der Kompilierung keine DLL-Dateien einbinden.Ich weiß nicht, ob es eine subtile Möglichkeit gibt, dies zu tun, aber Sie müssten die DLLs wahrscheinlich zusammen mit Ihrem CMS verteilen.Der beste Weg, dies zu tun, besteht darin, eine Art Weiterverteilbarkeit zu schaffen.

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