Mam 4 biblioteki DLL. Ale chcę mieć 1 pojedynczego dll, który będzie zawierał kod ze wszystkich 4 z tych bibliotek dll. Próbowałem dodać projekt i skopiować wkleić cały istniejący kod do jednego projektu, ale nie mogłem.Jak połączyć 2 lub więcej złożeń C# w 1 bibliotekę?
Odpowiedz
Zajrzyj do ILMerge
ILMerge to narzędzie do łączenia kilku zestawów .NET w pojedynczego zestawu .NET.
jak używać to ? – Javidan
@Javidan Dlaczego nie chcesz po prostu osadzać biblioteki DLL jako zasobów w jednej bibliotece dll? Nie trzeba dotykać złożeń, ponieważ mogą one być podpisane i wymagają rezygnacji z powstałego zestawu po scaleniu na poziomie IL. –
Nie wiem co zrobić. Zainstalowałem ilmerge, ale nie mogłem go użyć. I nie wiem, która jest wygodna i bezpieczna metoda łączenia. – Javidan
Można użyć ILMerge narzędzia
lub można embed the dlls you want to merge as resources
Oto próbka kodu:
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => {
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
};
Link w poście. –
Zawsze miałem mnóstwo problemów, próbując załadować osadzone pliki DLL ... to było trochę za późno, ale IIRC miałem problem, nawet z 'Load (byte [])' próbowano załadować zespół z dysku. –
@ pst Nie ma problemu z ładowaniem złożeń, ponieważ można je załadować we własnej domenie aplikacji i kontrolować dostęp i wersjonowanie ręcznie nad nim. I tak, złożeń podczas ładowania w domenie aplikacji, nie można ponownie załadować z dysku lub przepisane przez inny zespół, już załadowany do pamięci. Jest to zgodne z projektem. –
Jest to narzędzie z MS: ILMerge
- 1. Jak połączyć 3 lub więcej etapów realizacji?
- 2. Jak połączyć nieznaną bibliotekę
- 3. Jak połączyć dwa lub więcej strumieni
- 4. jak połączyć bibliotekę zlib
- 5. Jak "złączyć" 2 lub więcej DataTables w C#?
- 6. Połączyć dwie lub więcej przestrzeni nazw C++ w jedną
- 7. Xamarin.Android: Jak połączyć bibliotekę statyczną?
- 8. Jak połączyć dowolną bibliotekę w aplikacji ndk
- 9. Jak połączyć lub połączyć dwa lub więcej plików wideo w systemie Android?
- 10. Jak połączyć dwie lub więcej kolumn w ramkę danych w nową kolumnę z nową nazwą?
- 11. Jak połączyć więcej niż 2 zadania za pomocą JobChainingJobListener Quartz.net?
- 12. Jak połączyć dwa lub więcej plików/strumieni gzip
- 13. Jak dopasować 0 lub więcej niż 1 wystąpienie spacje
- 14. C++ - 2 klasy 1 plików
- 15. Jak napisać bibliotekę .so, aby zastąpić istniejącą bibliotekę C++ .so?
- 16. Neo4j: Dopasuj wiele etykiet (2 lub więcej)
- 17. neo4j połączyć 2 lub kilka duplikatów węzłów
- 18. Ustal, czy UL ma 1 lub więcej LI w zakresie
- 19. Dlaczego (lista + 1 2) odpowiada ('(+ 1 2) 1 2) w Common Lisp
- 20. zmienna 1 = ({instrukcja 1, instrukcja 2;}) konstruuje w C
- 21. Jak połączyć 2 Iteratory w Scali?
- 22. Jak scalić 2 kolumny na 1 kolumnie
- 23. Jak korzystać z 2 lub więcej baz danych ze sprężyną?
- 24. CSS - Bootstrap: poniżej 767px rzutnie 2 przęsła (lub więcej) na rzędy zamiast 1
- 25. Połączyć dwa lub więcej plików xls jako arkusze kalkulacyjne PHPExcel
- 26. Czy mogę "połączyć" 2 wyrażenia regularne z logiką lub?
- 27. Jak połączyć 2 łańcuchy w NSIS
- 28. Jak połączyć 2 elementy tablicy w PHP?
- 29. Czy C lub C++ ma standardową bibliotekę regex?
- 30. Ionic 1 AngularJs 1 kontra Ionic 2 AngularJs 2?
Dodaj je jako zasobów, użyj Eksploratora rozwiązań, otwórz właściwości projektu i dodaj ponownie wymagane złożenia jako zasoby binarne –
Tworzyłem bibliotekę klas (wspólne okna dialogowe). Ale znalazłem niektóre z nich, ale są one również w projekcie biblioteki klas. Dodałem je jako istniejący projekt do mojego PROJEKTU (biblioteki klas). I kiedy buduję i chcę użyj ich i muszę dodać każdy z nich do referencji. – Javidan
Dodaj referencje do tych bibliotek DLL do projektu, ale w sekcji Zespoły refekcyjne projektu, wskaż je i wybierz w Edytorze właściwości dla zestawów referencyjnych "Kopiuj lokalnie: False, Embed Types: False", po prostu wczytaj em jak zwykle z osadzonego zasobu w sekcji Aplikacja tuż przed wywołaniem metody Application.Run(), gdzie te zespoły odwołują się do twojego głównego zespołu. W każdym razie możesz odwoływać się do zespołów w projekcie w czasie projektowania i nie kopiować ich wszystkich do asembleruj folder wyjściowy, zamiast tego przechowuj jako zasób w jednym ładunku zespołu, gdy ten zespół pamięci odwołuje się do –