Visual studio как скомпилировать проект в exe
Перейти к содержимому

Visual studio как скомпилировать проект в exe

  • автор:

Как скомпилировать единый exe файл в проекте Visual Studio?

Сохраняется вот так, как можно создать единый файл?

Отслеживать
47.6k 5 5 золотых знаков 22 22 серебряных знака 57 57 бронзовых знаков
задан 15 мая 2021 в 11:24
Денис Волков Денис Волков
79 1 1 золотой знак 1 1 серебряный знак 5 5 бронзовых знаков

@AK Я не согласен с тем, что прилинкованный ответ отвечает на вопрос, поскольку это .NET Core/5, а ответ для Framework.

15 мая 2021 в 11:39
@aepot Действительно, ловите плюсик за внимательность к деталям.
15 мая 2021 в 12:14

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Вам нужно опубликовать Build -> Publish приложение, в параметрах публикации выбрать Folder, далее выбрать win-x64 файл и поставить галочку Produce single file.

Публикация приложения с одним файлом с помощью Visual Studio

Visual Studio создает многократно используемые профили публикации, которые управляют процессом публикации приложения.

  1. В обозревателе решений щелкните правой кнопкой мыши проект, который нужно опубликовать. Нажмите кнопку Опубликовать. Обозреватель решений с контекстным меню, где выделен пункт Опубликовать
    Если у вас еще нет профиля публикации, следуйте инструкциям по его созданию и выберите Папка в качестве типа целевого объекта.
  2. Нажмите кнопку Изменить. Профиль публикации Visual Studio с кнопкой Изменить
  3. В диалоговом окне Параметры профиля задайте следующие параметры.
    • Параметру Режим развертывания задайте значение Автономное или Зависимое от платформы.
    • В качестве значения параметра Целевая среда выполнения укажите платформу, на которую будет выполнена публикация. (Значение должно быть отличным от Переносимый.)
    • Выберите Создать отдельный файл. Нажмите кнопку Сохранить, чтобы сохранить параметры и вернуться в диалоговое окно Публикация. Диалоговое окно параметров профиля с выделенными параметрами для режима развертывания, целевой среды выполнения и создания отдельного файла
  4. Чтобы опубликовать приложение с одним файлом, нажмите кнопку Опубликовать.

Дополнительные сведения см. в статье Публикация приложений .NET Core с помощью Visual Studio.

По поводу того, чем опции Self-contained и Framework-dependent отличаются, я ранее рассказывал здесь.

Если все прошло хорошо, профиль публикации Properties\PublishProfiles\FolderProfile.pubxml будет выглядеть вот так

    Release Any CPU bin\Release\Publish FileSystem net5.0-windows win-x64 false True False   

А в интерфейсе публикации оно будет выглядеть так

введите сюда описание изображения

Примечание для .NET 5 и более новых версий

Так как в .NET 5 оптимизировали технологию запуска приложения из одиночного файла, теперь по умолчанию он не включает в себя нативные библиотеки, а включает только управляемые.

Если ваша сборка зависит от нативных библиотек, и вы столкнулись с тем, что dll файлы при публикации все равно лежат отдельно, то чтобы это вылечить, в первую секцию .cproj файла нужно добавить опцию:

true 

Как скомпилировать проект на C# в один .exe файл?

Всем привет.
Я написал простое консольное приложение на C# , под Windows .
Есть задача скомпилировать небольшой проект в 1 .exe файл. То есть , скрыть файлы .dll , которые создаются после компиляции.
Большинство из «нагугливанного» не работает (статьи 2001-2012 годов). Считаю , что вопрос актуален.
Какими средствами вы пользуйтесь?

  • Вопрос задан более двух лет назад
  • 4566 просмотров

Комментировать
Решения вопроса 1

vabka

Василий Банников @vabka Куратор тега .NET
Токсичный шарпист

Single File Application — фича современных дотнетов со времён .net Core 3
Буквально при помощи одной опции в файле проекта или одной строкой в консоли собирает ваш проект в единый екзешник, в который ещё может быть опционально встроен рантайм.
Вот пример csproj:

  Exe net6.0 enable   true true win-x64 true true link  

В результате получается единственный exe, который реально можно запустить где угодно, вне зависимости от установленной версии .NET

Для старых версий дотнета есть ILMerge и Costura.Fody, но в .net 5 они не нужны, и я крайне советую использовать именно .NET 5 (а скоро ещё 6 выйдет)

Ответ написан более двух лет назад
Нравится 5 10 комментариев

rootovich1

Lizard @rootovich1 Автор вопроса

Попробую сегодня, скажу результат.
Второй день изучаю Cи — подобные языки , кле что остаётся непонятным.

vabka

Василий Банников @vabka Куратор тега .NET

Lizard, а ну и ещё важный момент забыл упомянуть.
Собирать финальную версию надо либо через консоль
dotnet publish
Либо в студии кнопка «опубликовать» (там выбрать публикацию в папку)

Adler_lug

 true

Ну это сильно по необходимости, т.к. размер конечного файла при этом заметно возрастает.
+ в независимости от установленного рантайма.
— в размере конечного файла.

vabka

Василий Банников @vabka Куратор тега .NET

Alexander, кстати, размер файла, в случае Hello World, увеличился всего до 14мб. По идее, если отключить R2R, то будет ещё меньше

Adler_lug

Василий Банников, ну для Linux программа на .Net 5 с несколькими библиотеками c ~2-3Мб без рантаймов вырастает до около 100 (если не больше) с рантаймами.

rootovich1

Lizard @rootovich1 Автор вопроса

613610be93f88600525238.png

Василий Банников,
Сделал по инструкции , все равно конечный фаил имеет dll и не запускается без них.

Мой код, который я пытаюсь упоковать в один файл:

using System.IO; using System.Security.Cryptography; using System.Linq; namespace _2test < class Program < static void Main(string[] args) < byte[] key = Enumerable.Range(0, 32).Select(x =>(byte)x).ToArray(); string PathToFolder = @"C:\Users\Lizard\Downloads\"; string[] allfiles = Directory.GetFiles(PathToFolder); foreach (string filename in allfiles) < EncryptFile(filename, key); >> private static void EncryptFile(string path, byte[] key) < string tmpPath = Path.GetTempFileName(); using (FileStream fsSrc = File.OpenRead(path)) using (AesManaged aes = new AesManaged() < Key = key >) using (FileStream fsDst = File.Create(tmpPath)) < fsDst.Write(aes.IV); using (CryptoStream cs = new CryptoStream(fsDst, aes.CreateEncryptor(), CryptoStreamMode.Write, true)) < fsSrc.CopyTo(cs); >> File.Delete(path); File.Move(tmpPath, path); > > >
  Exe net5.0 true win-x64 true true true link  

Visual studio как скомпилировать проект в exe

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно.
Необходимо обновить браузер или попробовать использовать другой.

B правой части каждого сообщения есть стрелки ⇧ и ⇩ . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок ✔ в правой части сообщения.

Киберколизей II Прими участие в международных CTF-соревнованиях по кибербезопасности и получи крутые призы! Начало 11 ноября, 10:00 мск, Jeopardy, онлайн. Принять участие!

#10 – Создание Exe файла. Завершение

#10 – Создание Exe файла. Завершение

Для отправки вашего приложения друзьям или знакомым вам в первую очередь нужно создать EXE файл проекта. Его создание не столь сложный процесс. В уроке мы подведем итоги курса и создадим EXE файл.

Видеоурок

В ходе курса мы с вами изучили построение простых приложений с использованием языка C# и платформы WPF. Платформа состоит из сотен классов, функций и различных объектов. Изучить их все – очень сложно, а главное не нужно.

Попробуйте сейчас создать свое собственное приложение, а по ходу его реализации вы сами обучитесь новым действиям и функциям платформы WPF.

Программа обучения

Если вас интересует более углубленное изучение самого языка и его фреймворков, то предлагаем вашему внимаю наш полный курс по изучению C# . За курс вы изучите язык C#, научитесь делать веб проекты на основе ASP NET и строить приложения при помощи WinForms и WPF.

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *