Jak połączyć wiele zespołów w jeden?

Używam mojego stosu usług przy użyciu projektu EXE (zadanie startowe dla aplikacji azure), ponieważ skopiowałem następujące biblioteki DLL stosu usług i niektóre biblioteki DLL platformy Azure do projektu EXE.

dlls

Kiedy buduję ten projekt EXE to Azure DLL będzie dołączony do mojego EXE, ale service stack 's DLL nie będzie dołączony do EXE, ponieważ aby uruchomić mój EXE na dowolnym komputerze muszę ręcznie skopiować wszystkie service stack' s DLL.

Użyłem dll tego stosu usług, aby użyć

JsonServiceClient client = new JsonServiceClient(servicepath);

Co powinienem zrobić, aby połączyć te wszystkie biblioteki DLL do mojego EXE?

Author: BartoszKP, 2011-11-10

6 answers

Masz kilka opcji:

Lub

  • Użyj jakiegoś narzędzia, takiego jak SmartAssembly (komercyjny)
    może osadzać i scalać między innymi (nie trzeba zmieniać kodu źródłowego)

Lub

  • Kod w mniej niż 10 linijkach (darmowa, ale minimalna zmiana kodu źródłowego)
    Oznacz wszystkie potrzebne zależności jako " embedded resource" - w ten sposób są one zawarte w pliku EXE... musisz skonfigurować AssemblyResolve handler, który podczas wykonywania odczytuje z zasobów i zwraca potrzebne biblioteki DLL do środowiska wykonawczego. NET...
 103
Author: Yahia,
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
2011-11-10 12:04:59

Narzędzie, którego szukasz nazywa się ILMerge . Jest to narzędzie wiersza poleceń i może być używane w następujący sposób:

ilmerge /target:winexe /out:MyApp.exe 
        MyExe.exe ServiceStack.dll ServiceStack.Interfaces.dll ServiceStack.ServiceInterface.dll  ServiceStack.Text.dll

Jest również artykuł, który opisuje, jak włączyć ILMerge do konfiguracji projektu VS tutaj

 28
Author: yas4891,
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
2011-11-10 11:41:27

Świetnym narzędziem do dołączania odwołanych zestawów jako wbudowanych zasobów jest Costura (a Fody Dodatek). Autor Simon Kropp opisuje go w następujący sposób:

[...] połączenie dwóch metod:

Wynik jest super proste rozwiązanie, które wymaga jedynie pobrania Costury.Fody z NuGet.

Funkcje:

  • włącznie z symbolami debugowania
  • Kompresja wbudowanych zespołów
  • W tym / z wyłączeniem określonych zespołów
  • Inne (patrz Readme)
 22
Author: CodeFox,
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
2015-09-23 04:56:37

Spróbuj ILMerge-GUI, połączenia. NET . Jest to oparte na GUI Ilmerge, które unika pracy z wierszem poleceń.

 6
Author: Pritam,
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-12-23 04:37:31

Jeśli masz zależności WPF, Twoje opcje mogą być bardziej ograniczone..... ILMerge chyba się tym nie zajmuje. Costura.Fody (jak wspomniano powyżej przez Codefox) działał dla nas jednak doskonale i zajęło około 5 minut, aby rozpocząć... bardzo dobre doświadczenie.

Zainstaluj za pomocą Nuget (wybór odpowiedniego domyślnego projektu w konsoli Menedżera pakietów).

Scala wszystkie biblioteki DLL oznaczone "Copy Local" = true i tworzy scalone .EXE (obok standardowego wyjścia, z których większość jest teraz nie jest konieczne), który jest również skompresowany. Można go następnie stosować samodzielnie.

Licencja jest MIT, więc można modyfikować / dystrybuować zgodnie z wymaganiami.

Https://github.com/Fody/Costura/

 3
Author: rexall,
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-04-13 14:21:42

Sprawdź ServiceStack.Gap projekt, który pokazuje kilka przykładów HOWTO ILMerge ServiceStack w jednej wieloplatformowej .exe .

ServiceStack zawiera również szereg innych funkcji, które szczególnie dobrze nadają się do tworzenia wbudowanych aplikacji, gdzie:

    Pozwala na samodzielne hostowanie usług za pomocą. NET Listener HTTP
  • obsługuje wstępnie skompilowane widoki Razora
  • Obsługuje Wbudowane Zasoby
  • obsługuje wbudowany baza danych w Sqlite i OrmLite
  • mogą być połączone w jeden .exe
 2
Author: mythz,
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
2015-06-26 13:12:04