Для проекта консольного приложения, ориентированного на .NET Core 1.0, я не могу понять, как получить .exe для вывода во время сборки. Проект отлично работает в отладке.
Я пытался опубликовать проект, но это тоже не работает. Это имеет смысл, поскольку EXE-файл будет зависеть от платформы, но должен быть способ. Мои поиски обнаружили только ссылки на более старые версии .NET Core, которые использовали project.json.
Всякий раз, когда я создаю или публикую, это все, что я получаю:
dotnet <path>.dll
(я не думал и печаталdotnet run <path>.dll
без успеха по понятным причинам)! (Если подумать, было бы хорошо, если бы этот вопрос был закрыт в пользу другого вопроса, на который есть аналогичный набор ответов)Ответы:
В целях отладки вы можете использовать файл DLL. Вы можете запустить его, используя
dotnet ConsoleApp2.dll
. Если вы хотите сгенерировать EXE-файл, вы должны сгенерировать автономное приложение.Чтобы создать автономное приложение (EXE в Windows), необходимо указать целевую среду выполнения (которая зависит от целевой операционной системы).
Только до версии .NET Core 2.0 : сначала добавьте идентификатор времени выполнения целевых сред выполнения в файле .csproj ( список поддерживаемых RID ):
Вышеуказанный шаг больше не требуется, начиная с .NET Core 2.0 .
Затем установите желаемое время выполнения при публикации приложения:
источник
RuntimeIdentifier
в csproj.ОБНОВЛЕНИЕ (31 октября 2019 года)
Для тех, кто хочет сделать это через графический интерфейс и:
Запись
Обратите внимание на большой размер файла для такого маленького приложения
Вы можете добавить свойство «PublishTrimmed». Приложение будет включать в себя только те компоненты, которые используются приложением. Внимание : не делайте этого, если вы используете отражение
Опубликуй снова
Предыдущий пост
Для тех, кто использует Visual Studio и хочет сделать это через графический интерфейс, см. Шаги ниже:
источник
Следующее будет производить в выходной каталог,
Но он не содержит всех сборок среды выполнения .NET Core.
Я завернул это в примере здесь: https://github.com/SimonCropp/NetCoreConsole
источник
Если файл .bat приемлем, вы можете создать файл bat с тем же именем, что и файл DLL (и поместить его в ту же папку), а затем вставить следующее содержимое:
Очевидно, это предполагает, что на компьютере установлено .NET Core и доступно глобально.
(Этот ответ получен из комментария Чета .)
источник
Вот мой хакерский обходной путь - создайте консольное приложение (.NET Framework), которое читает свое собственное имя и аргументы, а затем вызывает
dotnet [nameOfExe].dll [args]
.Конечно, это предполагает, что .NET установлен на целевой машине.
Вот код Не стесняйтесь копировать!
источник
dotnet [nameOfExe].dll %*