Перейти к содержимому

Как сделать exe файл в visual studio c windows forms

  • автор:

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

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

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

Комментировать
Решения вопроса 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 8, тк он сейчас самый актуальный

Ответ написан более двух лет назад
Нравится 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  

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

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

Отслеживать
48.4k 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 

Как сделать exe файл в visual studio c windows forms

Для создания графических приложений на C# можно использовать .NET CLI, но также можно использовать бесплатную и полнофункциональную среду разработки — Visual Studio Community 2022 , которая в ряде случаев облегчает проектирование приложения. Так, загрузим установщик Visual Studio по адресу: https://www.visualstudio.com/en-us/downloads.

Установка Visual Studio для Windows Forms

Чтобы добавить в Visual Studio поддержку проектов для Windows Forms и C# и .NET, в программе установки среди рабочих нагрузок нужно выбрать только пункт Разработка классических приложений .NET . Можно выбрать и больше опций или вообще все опции, однако стоит учитывать свободный размер на жестком диске — чем больше опций будет выбрано, соответственно тем больше места на диске будет занято.

Разработка классических приложений .NET Windows Forms в Visual Studio

После установки среды и всех ее компонентов, запустим Visual Studio и создадим проект графического приложения. На стартовом экране выберем Create a new project (Создать новый проект)

Разработка классических приложений на C# и Windows Forms в Visual Studio

На следующем окне в качестве типа проекта выберем Windows Forms App :

создание первого проекта Windows Forms на C#

Стоит отметить, что среди шаблонов можно увидеть еще тип Windows Forms App (.NET Framework) — его НЕ надо выбирать, необходим именно тип Windows Forms App .

Далее на следующем этапе нам будет предложено указать имя проекта и каталог, где будет располагаться проект.

первый проект Windows Forms на C#

В поле Project Name дадим проекту какое-либо название. В моем случае это HelloApp .

На следующем окне Visual Studio предложит нам выбрать версию .NET, которая будет использоваться для проекта. Выберем последнюю на данный момент версию — .NET и нажмен на кнопку Create (Создать) для создания проекта.

Версия .NET для проекта Windows Forms на C#

После этого Visual Studio откроет наш проект с созданными по умолчанию файлами:

первый проект Windows Forms на C# в Visual Studio

Справа находится окно Solution Explorer, в котором можно увидеть структуру нашего проекта. Практически этот тот же проект, который создается с помощью .NET CLI:

  • Dependencies — это узел содержит сборки dll, которые добавлены в проект по умолчанию. Эти сборки как раз содержат классы библиотеки .NET, которые будет использовать C#
  • Form1.Designer.cs : он содержит определение компонентов формы, добавленных на форму в графическом дизайнере
  • Далее идет файл единственной в проекте формы — Form1.cs , который по умолчанию открыт в центральном окне.
  • Program.cs определяет точку входа в приложение
Запуск приложения

Чтобы запустить приложение в режиме отладки, нажмем на клавишу F5 или на зеленую стрелочку на панели Visual Studio.

Запуск проекта Windows Forms в Visual Studio

После этого запустится пустая форма Form1 по умолчанию.

проект Windows Forms на C# в Visual Studio

После запуска приложения студия компилирует его в файл с расширением exe. Найти данный файл можно, зайдя в папку проекта и далее в каталог \bin\Debug\net8.0-windows

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

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

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

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

Видеоурок

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

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

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

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

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

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

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

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

Luxury Car Rental in Miami | Reserve a Premium Vehicle with RealCar