Собрать консольное приложение как exe

151
19 октября 2021, 05:10

Всем привет! Создал консольный проект C#, но после сборки в папке bin/debug лежит папка netcoreapp2.1. Есть возможность собрать проект как exe?

Answer 1

Не нашел подтверждение тому, что это дубликат, поэтому все таки напишу решение, применимое в Visual Studio для net core начиная с версии 2.0 по текущую 3.1. Скорее всего как-то так же должно работать и для более старых, но не проверял.

При сборке проекта для net core формируется только dll, которая содержит только управляемый код, необходимый для среды исполнения net core и не содержит ни каких, специфичных для конечной платформы, заголовков и/или неуправляемых фрагментов кода. Это нужно для кроссплатформенности, которая в настоящее время вполне успешно реализована в net core. Запускать такую DLL как самостоятельное приложение нужно с помощью самой среды исполнения, например, командой:

netcore.exe <имя сборки>

Чтобы получить исполняемый модуль для конкретной платформы следует использовать механизм публикации (Publish в контекстном меню проекта). Настраиваете публикацию вашего консольного приложения в локальную папку, выбираете в качестве целевой платформы Windows нужной разрядности и публикуете. В результате будет выполнена сборка dll, плюс сформирован одноименный .exe с необходимыми заголовками для ОС.

Чтобы не требовать от пользователя установку конкретной версии среды исполнения .net core, нужно указать в параметрах публикации режим Self contained, при котором все необходимое для работы будет скопировано в папку публикации. Этих файлов будет достаточно для запуска вашего приложения без установки среды исполнения на машине пользователя, но в таком случае, передавать приложение пользователю лучше в виде архива, т.к. в состав публикации включается, уменьшенная до необходимого и достаточного состава, среда исполнения .net core.

Тут есть еще немного подробностей про режимы публикации, ну и официальную документацию ни кто не отменял.

Answer 2

Вариант, создать проект на NET Core 3 и после сборки появится исполняемый файл (ехе. для Windows).

READ ALSO
Позиция слов datagridview

Позиция слов datagridview

нужна очень помощь, пожалуйстаВ datagridview находится массив слов, который берется с richtextbox

301
C# не видит класс Stopwatch

C# не видит класс Stopwatch

Я хочу использовать класс StopwatchПодключил System

152
Как получить текст из консольного приложения (ListDLLs)

Как получить текст из консольного приложения (ListDLLs)

ListDLLs выдаёт текст в консоль при правильных аргументах

210
Как организовать следующую задачу c#

Как организовать следующую задачу c#

Есть абстрактный класс "Работник" с абстрактным методом "Подсчитать зараплату", от него наследуются два класса реализующие этот метод, "Наёмный...

173