W przypadku projektu aplikacji konsolowej ukierunkowanej na .NET Core 1.0 nie mogę dowiedzieć się, jak uzyskać plik .exe, który będzie generowany podczas kompilacji. Projekt działa poprawnie podczas debugowania.
Próbowałem opublikować projekt, ale to też nie działa. Ma to sens, ponieważ plik EXE byłby specyficzny dla platformy, ale musi istnieć sposób. Moje wyszukiwania ujawniły tylko odniesienia do starszych wersji .NET Core, które korzystały z project.json.
Za każdym razem, gdy buduję lub publikuję, to wszystko, co otrzymuję:
dotnet <path>.dll
(dotnet run <path>.dll
z oczywistych powodów nie myślałem i pisałem bez sukcesu)! (Po zastanowieniu dobrze byłoby, gdyby zostało zamknięte na korzyść drugiego pytania, które ma podobny zestaw odpowiedzi)Odpowiedzi:
Do celów debugowania można użyć pliku DLL. Możesz go uruchomić za pomocą
dotnet ConsoleApp2.dll
. Jeśli chcesz wygenerować plik EXE, musisz wygenerować samodzielną aplikację.Aby wygenerować samodzielną aplikację (EXE w systemie Windows), musisz określić docelowy czas wykonywania (który jest specyficzny dla systemu operacyjnego, na który celujesz).
Tylko wersja wcześniejsza niż .NET Core 2.0 : Najpierw dodaj identyfikator środowiska wykonawczego docelowych środowisk uruchomieniowych do pliku .csproj ( lista obsługiwanych identyfikatorów RID ):
Powyższy krok nie jest już wymagany, począwszy od .NET Core 2.0 .
Następnie ustaw żądane środowisko wykonawcze podczas publikowania aplikacji:
źródło
RuntimeIdentifier
csproj.AKTUALIZACJA (31-OCT-2019)
Dla każdego, kto chce to zrobić za pomocą GUI i:
Uwaga
Zwróć uwagę na duży rozmiar pliku dla tak małej aplikacji
Możesz dodać właściwość „PublishTrimmed”. Aplikacja będzie zawierać tylko składniki używane przez aplikację. Uwaga : nie rób tego, jeśli używasz odbicia
Opublikuj ponownie
Poprzedni post
Dla każdego, kto używa Visual Studio i chce to zrobić za pomocą GUI, zobacz poniższe kroki:
źródło
Poniższe spowoduje wygenerowanie w katalogu wyjściowym
Ale nie zawiera wszystkich zestawów środowiska uruchomieniowego .NET Core.
Zrobiłem to w próbce tutaj: https://github.com/SimonCropp/NetCoreConsole
źródło
Jeśli plik .bat jest akceptowalny, możesz utworzyć plik nietoperza o tej samej nazwie co plik DLL (i umieścić go w tym samym folderze), a następnie wkleić następującą treść:
Oczywiście zakłada to, że komputer ma zainstalowany program .NET Core i jest dostępny na całym świecie.
(Ta odpowiedź pochodzi z komentarza Cheta ).
źródło
Oto moje hacky obejście - wygeneruj aplikację konsolową (.NET Framework), która odczyta własną nazwę i argumenty, a następnie wywoła
dotnet [nameOfExe].dll [args]
.Oczywiście zakłada to, że .NET jest zainstalowany na maszynie docelowej.
Oto kod. Nie krępuj się skopiować!
źródło
dotnet [nameOfExe].dll %*