Łączenie statycznie w C#

Pracuję nad modułem do CMS. Moduł ten jest dystrybuowany jako biblioteka klasy DLL.

Mam kilka bibliotek narzędzi, które chciałbym wykorzystać w tym module. Czy w każdym razie mogę połączyć te biblioteki statycznie, więc nie będę musiał dystrybuować kilku DLL (dystrybuując tym samym moje biblioteki narzędzi osobno)?

Chciałbym mieć tylko jedną bibliotekę DLL.

Author: erlando, 2008-09-02

3 answers

Możesz połączyć wiele bibliotek DLL z ILMERGE:

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

Sam nie próbowałem. Mam nadzieję, że to pomoże.


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

Krótki opis (z download-page)
ILMerge to narzędzie do łączenia wielu zestawów. NET w jeden zestaw. NET. Działa na plikach wykonywalnych i bibliotekach DLL i zawiera kilka opcji do kontrolowania przetwarzania i formatu wyjścia. Szczegółowe informacje można znaleźć w załączonej dokumentacji.

 23
Author: Seb Nilsson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-02 12:15:38

Jeśli nie chcesz korzystać z ILMerge, zobacz tę stronę:

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

Editor ' s note: Jeffrey Richter radzi umieścić swoje biblioteki DLL w pliku exe jako zasoby ( dla każdego dodanego pliku DLL, wyświetlić jego właściwości i zmienić jego "Build Action" na "Embedded Resource."). Następnie potrzebny jest niestandardowy Loader klasy, aby plik wykonywalny działał (W CLR nie będzie w stanie znaleźć zależnych zespołów DLL, co stanowi problem. Aby to naprawić, podczas inicjalizacji aplikacji, zarejestruj metodę wywołania zwrotnego za pomocą zdarzenia ResolveAssembly AppDomain).

Pamiętaj, aby zmienić resourceName ciąg znaków, aby wskazać rzeczywiste zasoby. (np. zmień AssemblyLoadingAndReflection na nazwę projektu.)

 12
Author: Kaganar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-16 07:20:00

Krótka odpowiedź na to pytanie brzmi: nie! Nie można połączyć w dll podczas kompilacji. Nie wiem, czy jest jakiś subtelny sposób, aby to zrobić, ale prawdopodobnie będziesz musiał rozpowszechniać biblioteki DLL wraz z cms. Najlepszym sposobem, aby to zrobić, jest dokonanie pewnego rodzaju re-dystrybucji.

 2
Author: khebbie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-02 09:58:31