2009-08-27 6 views
6

Chciałbym, aby moje komponenty/złożenia były wyraźnie oddzielone od punktu kodu źródłowego, ale potrzebuję również w pewnych okolicznościach (prawdopodobnie nieistotnych do rozwinięcia), aby spakować je w tej samej bibliotece dll.Czy istnieje sposób na spakowanie więcej niż jednego zestawu .NET w bibliotece dll?

Czy można spakować wiele zestawów .NET w jednym pliku dll? Jeśli tak to jak?

Jeśli to możliwe, myślisz, że to dobry pomysł? Czemu?

Każda pomoc doceniona!

Odpowiedz

9

Sprawdź ten artykuł: Merging .NET assemblies using ILMerge


Jak wiecie, tradycyjne łączenie kodu obiektowego nie jest już konieczne w .NET. Program .NET zazwyczaj składa się z wielu części. Typowa aplikacja .NET składa się z jednego wykonywalnego zespołu , kilku zespołów w katalogu programu oraz z kilku zespołów w pamięci podręcznej globalnego zespołu. Po uruchomieniu programu środowisko wykonawcze łączy wszystkie te części z programem . Łączenie w czasie kompilacji nie jest już konieczne.

Czasami jednak jest użyteczne, aby połączyć wszystkie części, które musi wykonać program w pojedynczy zestaw . Na przykład użytkownik może chcieć, aby uprościł wdrażanie aplikacji , łącząc wszystkie wymagane biblioteki i wszystkie zasoby w jeden plik .exe.

csc /target:library /out:ClassLibrary1.dll ClassLibrary1.cs 
vbc /target:library /out:ClassLibrary2.dll ClassLibrary2.vb 
vbc /target:winexe /out:Program.exe 
    /reference:ClassLibrary1.dll,ClassLibrary2.dll Program.vb 

.

ilmerge /target:winexe /out:SelfContainedProgram.exe 
     Program.exe ClassLibrary1.dll ClassLibrary2.dll 
+0

Ale to produkuje plik EXE, a nie DLL (?) –

+1

to samo powinno być wykonalne z dll jako wyjście - myślę ... – JohnIdol

6

ILMerge może łączyć dwa zespoły w jeden.

Aby uzyskać więcej informacji, patrz here (przykłady dotyczą języka wielojęzycznego, ale będą działać bez względu na narzędzia, z których zbudowano zespoły).

Oczywiście wszelkie zależności na poszczególnych złożeniach (przed scaleniem) będą wymagały aktualizacji/przekierowania.

Powiązane problemy