Zużywam mój stos usług przy użyciu projektu EXE (zadanie uruchamiania dla aplikacji Azure) w tym, że skopiowałem następujące biblioteki DLL stosu usług i niektóre biblioteki DLL platformy Azure do projektu EXE.
Kiedy zbuduję ten projekt EXE, biblioteki DLL Azure zostaną dołączone do mojego pliku EXE, ale biblioteka DLL stosu usług nie zostanie dołączona do pliku EXE, ponieważ aby uruchomić plik EXE na dowolnym komputerze, muszę ręcznie skopiować wszystkie biblioteki DLL stosu usług.
Użyłem biblioteki dll tego stosu usług
JsonServiceClient client = new JsonServiceClient(servicepath);
Co powinienem zrobić, aby dołączyć wszystkie te biblioteki DLL do mojego EXE?
c#
assemblies
exe
ilmerge
servicestack
Arun Rana
źródło
źródło
Narzędzie, którego szukasz, nazywa się ILMerge . Jest to narzędzie wiersza poleceń i można go używać 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
Istnieje również artykuł opisujący, jak dołączyć ILMerge do konfiguracji projektu VS tutaj
źródło
Świetnym narzędziem do dołączania zestawów, do których istnieją odniesienia, jako zasobów osadzonych, jest Costura ( dodatek Fody ). Autor Simon Kropp opisuje to następująco:
Rezultatem jest super proste rozwiązanie, które wymaga jedynie pobrania Costura.Fody z NuGet.
Cechy:
źródło
Wypróbuj ILMerge-GUI, połączenie .NET . Jest to oparte na GUI,
Ilmerge
które pozwala uniknąć pracy z wiersza poleceń.źródło
Jeśli masz zależności WPF, opcje mogą być bardziej ograniczone ..... ILMerge nie radzi sobie z nimi. Costura.Fody (jak wspomniał Codefox powyżej) działał jednak idealnie dla nas i zajęło około 5 minut ... bardzo dobre doświadczenie.
Zainstaluj z Nuget (wybierając prawidłowy domyślny projekt w konsoli Menedżera pakietów).
Scala wszystkie biblioteki DLL oznaczone jako „Copy Local” = true i tworzy scalony plik .EXE (obok standardowego wyjścia, którego większość nie jest teraz potrzebna), który również jest kompresowany. Można go następnie używać samodzielnie.
Licencja jest MIT, więc możesz modyfikować / rozpowszechniać zgodnie z wymaganiami.
https://github.com/Fody/Costura/
źródło
Checkout ServiceStack.Gap projekt, który pokazuje kilka przykładów howto ILMerge ServiceStack w jeden cross-platformowej .exe .
ServiceStack zawiera również szereg innych funkcji, które są szczególnie przydatne w przypadku tworzenia aplikacji osadzonych, w których:
źródło
.net core 3 wprowadza dwie nowe opcje w konfiguracji projektu, zwane publikowaniem i przycinaniem pojedynczego pliku.
Więcej informacji na temat dokumentów można znaleźć tutaj , a konfigurację projektu skopiowano tutaj w celach informacyjnych.
<PropertyGroup> <RuntimeIdentifier>win10-x64</RuntimeIdentifier> <PublishSingleFile>true</PublishSingleFile> </PropertyGroup> <PropertyGroup> <PublishTrimmed>true</PublishTrimmed> </PropertyGroup>
dotnet publish -r win10-x64 -p:PublishSingleFile=true dotnet publish -r <rid> -c Release
W pełni obsługiwane jest łączenie dwóch opcji w celu uzyskania przyciętego pojedynczego zespołu do zastosowania.
źródło