c# kompilacja dll z exe

0

Witam,
Chciałbym dodać niezbędne biblioteki potrzebne do uruchomienia mojego programu na innych komputerach. W C++ można to było zrobić w właściwościach projektu ale w C# już takiej opcji nie ma.

Czy jest jakiś sposób aby dodać potrzebne pliki do projektu i skompilować je z exe?

Chodzi mi oczywiście o biblioteki inne niż .NET np do SQLLite itp.

0

Jeżeli chodzi ci o .NET-owe "assembly" (w postaci .dll) to możesz użyć ILMerge.

http://przemyslawczatrowski.com/2010/04/01/ilmerge-dolaczanie-zewnetrznych-bibliotek/

0

Chodzi ci o połączenie DLL z EXE, czy tylko o dodanie DLL-ki do projektu?
Bo wyrażasz się niejasno.

0
Ktos napisał(a):

Jeżeli chodzi ci o .NET-owe "assembly" (w postaci .dll) to możesz użyć ILMerge.

http://przemyslawczatrowski.com/2010/04/01/ilmerge-dolaczanie-zewnetrznych-bibliotek/

oto mi chodziło ale po dodaniu SqLite.system.data chce aby dodać jeszcze SqLite3.dll a tego nie idzie dodać:/
jakieś pomysły?

0

To jest prawdopodobnie biblioteka natywna (nie .NETowa). Będzie ciężko.

Tu ktoś wymyślił w C++
http://www.joachim-bauch.de/tutorials/loading-a-dll-from-memory/
Tutaj w Delphi
http://code.google.com/p/memorymodule/downloads/list
ale przełożenie tego na zarządzany C# będzie ciężko.

0

Jest na to troszkę pokrętne rozwiązanie.
Możesz dll załadować do zasobów, jako "embedded resource". Następnie stworzyć interface/klasę bazową, która "opakuje" twoją funkcjonalność. Użyć fabryki klas, aby "po cichu" stworzyć potrzebną ci klasę (klasy), które będą implementowały interface/dziedziczyły po klasie bazowej.
Dzięki temu ominiesz wymóg posiadania dll w katalogu na starcie aplikacji (.NET nie będzie jej szukał). Zacznie to robić dopiero wczytując assembly, gdzie będą twoje klasy. One już mogą mieć referencje do dowolnych bibliotek.
Te klasy wpakowane w dll + potrzebne ci biblioteki wyciągasz z zasobów, zapisujesz na dysk, wczytujesz assembly z dysku i instancjonujesz klasy. Po zakończeniu działania programu, czyścisz po sobie dysk.
Zadziała, ale komplikuje całość dość mocno. Inaczej będzie ciężko wkompilować bibliotekę niezarządzaną do kodu zarządzanego - po prostu trzeba oszukać lnikera i nie mówić mu, że to co wkompilowujesz to kod, tak aby nie brał się za jego walidację i czytanie.

0

Chyba najprościej tak:

http://codeblog.larsholm.net/2011/06/embed-dlls-easily-in-a-net-assembly/

A jeśli natywna dll-ka to też do zasobów, wypakować gdzieś do katalogu tymczasowego i wczytywać przez LoadLibrary - przyjemne to nie będzie, bo całe dynamiczne ładowanie dll rodem z C i WinApi trzeba przepisać na składnię C#.

1 użytkowników online, w tym zalogowanych: 0, gości: 1