Как скомпилировать единый 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 создает многократно используемые профили публикации, которые управляют процессом публикации приложения.
- В обозревателе решений щелкните правой кнопкой мыши проект, который нужно опубликовать. Нажмите кнопку Опубликовать.

Если у вас еще нет профиля публикации, следуйте инструкциям по его созданию и выберите Папка в качестве типа целевого объекта. - Нажмите кнопку Изменить.

- В диалоговом окне Параметры профиля задайте следующие параметры.
- Параметру Режим развертывания задайте значение Автономное или Зависимое от платформы.
- В качестве значения параметра Целевая среда выполнения укажите платформу, на которую будет выполнена публикация. (Значение должно быть отличным от Переносимый.)
- Выберите Создать отдельный файл. Нажмите кнопку Сохранить, чтобы сохранить параметры и вернуться в диалоговое окно Публикация.

- Чтобы опубликовать приложение с одним файлом, нажмите кнопку Опубликовать.
Дополнительные сведения см. в статье Публикация приложений .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
Отладка приложения, которое не входит в решение Visual Studio (C++, C#, Visual Basic, F#)
Иногда требуется выполнить отладку приложения (EXE-файл), которое не является частью решения Visual Studio. Это может быть проект с открытой папкой, вы или кто-то другой мог создать приложение вне Visual Studio или вы получили приложение в другом месте.
- Для проекта с открытой папкой в Visual Studio (без файла проекта или решения) см. статью Выполнение и отладка кода или (для C++) Настройка параметров отладки с помощью launch.vs.json.
- Для приложения, которое не существует в Visual Studio, отладка обычно выполняется путем запуска за пределами Visual Studio, а затем присоединения с помощью функции Присоединение к процессу в отладчике Visual Studio. Дополнительные сведения см. в статье Присоединение к выполняемым процессам. Присоединение к приложению требует выполнения некоторых операций вручную, и это занимает несколько секунд. Из-за этой задержки присоединение не помогает отладить проблемы при запуске или приложение, которое не ждет ввода данных пользователем и быстро завершается. В таких ситуациях можно создать проект Visual Studio EXE для приложения или импортировать его в существующее решение C#, Visual Basic или C++. Не все языки программирования поддерживают исполняемые проекты.
Функции отладки для приложения, не созданного в Visual Studio, ограниченны, независимо от того, присоединяетесь ли вы к нему или добавляете в решение Visual Studio.
Если у вас есть исходный код, лучше всего импортировать его в проект Visual Studio. Затем запустите отладочную сборку приложения.
Если у вас нет исходного кода и у приложения нет отладочной информации в совместимом формате, вам доступно немного функций отладки.
Создание EXE-проекта для существующего приложения
- В Visual Studio последовательно выберите Файл>Открыть>Проект.
- В диалоговом окне Открыть проект выберите Все файлы проекта, если они еще не выбраны, в раскрывающемся списке рядом с полем Имя файла.
- Перейдите к EXE-файлу, выберите его и щелкните Открыть. Файл появится в новом временном решении Visual Studio.
- Запустите отладку приложения, выбрав команду выполнения, например Начать отладку в меню Отладка.
Чтобы импортировать приложение в решение Visual Studio
- Когда решение C++, C# или Visual Basic будет открыто в Visual Studio, выберите Файл>Добавить>Существующий проект.
- В диалоговом окне Открыть проект выберите Все файлы проекта, если они еще не выбраны, в раскрывающемся списке рядом с полем Имя файла.
- Перейдите к EXE-файлу, выберите его и щелкните Открыть. Файл появится как новый проект в текущем решении.
- Выберите новый файл и запустите отладку приложения, выбрав команду выполнения, например Начать отладку в меню Отладка.
Связанный контент
- Параметры отладчика и подготовка
- Безопасность отладчика
- DBG-файлы
Руководство. Создание приложения
В этой статье описываются некоторые параметры, которые можно настроить при создании приложений с помощью Visual Studio. Вы создадите настраиваемую конфигурацию сборки, скроете определенные предупреждения и расширите выходные данные сборки для примера приложения.
Установите пример приложения
Пример кода, используемый в этом руководстве, приведен в примерах WPF. Чтобы клонировать репозиторий, нажмите зеленую кнопку клонирования GitHub и выберите «Клонировать» в Visual Studio. Вы можете выбрать расположение на локальном жестком диске, чтобы создать копию содержимого репозитория. Репозиторий содержит множество решений. Если Visual Studio открывает одно из решений, закройте решение, а затем выберите «Открыть проект или решение» и перейдите к расположению, в котором клонировали репозиторий, и в этом разделе найдите метод GettingStarted/WalkthroughFirstWPFApp/csharp/ExpenseItIntro.sln , чтобы работать в C#, или GettingStarted/WalkthroughFirstWPFApp/vb/ExpenseItIntro2.sln для работы в Visual Basic.
Создание настраиваемой конфигурации сборки
При создании решения конфигурации сборки отладки и выпуска и их целевых объектов платформ по умолчанию определяются для решения автоматически. Затем вы можете настроить эти конфигурации или создать собственные. Конфигурации указывают тип сборки. Целевые платформы указывают операционную систему, на которое ориентировано приложение для этой конфигурации. Дополнительные сведения см. в разделе «Общие сведения о конфигурациях сборки», «Настройка проектов для целевых платформ» и «Практическое руководство. Настройка конфигураций отладки и выпуска».
Конфигурации и параметры платформы можно изменять или создавать с помощью диалогового окна Диспетчер конфигураций. В этой процедуре вы создадите конфигурацию сборки для тестирования.
Создание конфигурации сборки
- Откройте диалоговое окно Диспетчер конфигураций.

- В списке Активная конфигурация решения выберите .

- В диалоговом окне Создание конфигурации решения введите для новой конфигурации имя Test , скопируйте параметры из существующей конфигурации Отладка и нажмите кнопку ОК.

- В списке Активная платформа решения выберите .
- В диалоговом окне Создание платформы решения выберите x64 и не копируйте параметры из платформы x86.

- Нажмите кнопку ОК. Активная конфигурация решения была изменена на Тест, а для активной платформы решения задано значение x64.

- Выберите Закрыть.
Активную конфигурацию решения можно быстро проверить или изменить с помощью списка Конфигурации решения на панели инструментов Стандартная.

- Откройте диалоговое окно Диспетчер конфигураций.

- В списке Активная конфигурация решения выберите .

- В диалоговом окне Создание конфигурации решения введите для новой конфигурации имя Test , скопируйте параметры из существующей конфигурации Отладка и нажмите кнопку ОК.

- В столбце «Платформа» разверните раскрывающийся список и выберите «Создать»,> чтобы создать новую платформу проекта.

- В диалоговом окне «Новая платформа проекта» выберите x64 и не копируйте параметры из платформы x86.
Если платформа решения x64 уже существует, не проверка поле «Создание активной платформы решения». - Нажмите кнопку ОК. Активная конфигурация решения была изменена на Тест, а для активной платформы решения задано значение x64.

- Выберите Закрыть.
Активную конфигурацию решения можно быстро проверить или изменить с помощью списка Конфигурации решения на панели инструментов Стандартная.

Если вы не видите активную конфигурацию решения или активную платформу, показанную на панели инструментов, выберите значок со стрелками в правом углу панели инструментов и нажмите кнопку «Добавить» или «Удалить». Убедитесь, что включены конфигурации решений и платформы решений.
Сборка приложения
Далее вам предстоит создать решение с помощью настраиваемой конфигурации сборки.
Выполните сборку решения.
- В строке меню последовательно выберите Сборка>Собрать решение (или нажмите CTRL+SHIFT+B). Окно Вывод отображает результат сборки. Сборка успешно завершена.
Скрытие предупреждений компилятора
Далее мы добавим код, который приводит к созданию предупреждения компилятором.
- В проекте C# откройте файл ExpenseReportPage.xaml.cs. В методе ExpenseReportPage добавьте следующий код: int i; . ИЛИ В проекте Visual Basic откройте файл ExpenseReportPage.xaml.vb. В пользовательском конструкторе Public Sub New. добавьте следующий код: Dim i .
- Постройте решение.
Окно Вывод отображает результат сборки. Сборка была выполнена успешно, но были созданы предупреждения:




Вы можете временно скрыть некоторые предупреждения во время сборки, чтобы они не засоряли выходные данные сборки.
Скрытие определенного предупреждения C#
- В обозревателе решений выберите узел проекта верхнего уровня.
- В строке меню выберите Вид>Страницы свойств. Открывается Конструктор проектов.
- Выберите вкладку «Сборка » или раздел, а затем в поле «Отключить предупреждения» укажите номер предупреждения 0168. Если другие предупреждения уже перечислены, используйте точку с запятой в качестве разделителя.




Отключение всех предупреждений сборки в Visual Basic
- В обозревателе решений выберите узел проекта верхнего уровня.
- В строке меню выберите Вид>Страницы свойств. Открывается Конструктор проектов.
- На странице Компиляция установите флажок Выключить все предупреждения.




Отображение дополнительных сведений о сборке в окне вывода
Вы можете изменить объем информации, отображаемый о процессе сборки в окне Вывод. В общем случае задан минимальный уровень детализации сборки, при котором в окне Вывод отображается только сводка по процессу сборки вместе с высокоприоритетными предупреждениями или ошибками. Чтобы отобразить дополнительные сведения о сборке, см. раздел Диалоговое окно «Параметры», «Проекты и решения», «Сборка и запуск».
При отображении дополнительных сведений сборка будет занимать больше времени.
Изменение объема сведений в окне вывода
- Откройте диалоговое окно Параметры.


Совет В окне Вывод можно искать содержимое, отобразив диалоговое окно Найти нажатием клавиш CTRL+F.
Создание сборки выпуска
Вы можете создать версию примера приложения, оптимизированную для поставки. Для сборки выпуска вы указываете, что исполняемый файл копируется в общую сетевую папку перед запуском сборки.
Указание сборки выпуска для Visual Basic
- Чтобы открыть конструктор проектов, выберите узел проекта в Обозреватель решений, щелкнув правой кнопкой мыши и выбрав «Свойства» (или нажмите клавиши ALT +ВВОД) или в меню «Вид«, выберите страницы свойств:


Важно! Может появиться окно с предупреждением о том, что указанная вами сетевая общая папка может быть ненадежна. Если вы доверяете указанному расположению, нажмите кнопку ОК в окне сообщения.


Указание сборки выпуска для C#
- Открывается Конструктор проектов.


Важно! Может появиться окно с предупреждением о том, что указанная вами сетевая общая папка может быть ненадежна. Если вы доверяете указанному расположению, нажмите кнопку ОК в окне сообщения.


Поздравляем! Вы успешно завершили работу с этим руководством.
См. также
- Пошаговое руководство. Сборка проекта (C++)
- Общие сведения о предварительной компиляции проектов веб-приложений ASP.NET
- Пошаговое руководство. Использование MSBuild
Типы файлов, созданные для проектов Visual Studio C++
Многие типы файлов связаны с проектами Visual Studio для классических приложений. То, какие файлы фактически войдут в ваш проект, зависит от типа проекта и параметров, выбранных при работе с мастером.
- Файлы проекта и решения
- Проекты CLR
- Программа ATL или управление файлами исходного кода и заголовков
- Программа MFC или управление файлами исходного кода и заголовков
- Файлы предварительно скомпилированных заголовков
- Файлы ресурсов
- Файлы справки (WinHelp)
- Файлы указаний
При создании проекта Visual Studio его можно создать в новом решении или добавить проект в существующее решение. Нетривиальные приложения обычно разрабатываются как решения, содержащие множество проектов.
Обычно выходным файлом проекта является EXE- или DLL-файл. Проекты могут зависеть друг от друга; во время сборки среда Visual Studio проверка зависимости как внутри, так и между проектами. Каждый проект обычно имеет основной исходный код. В зависимости от типа проекта может быть много других файлов, содержащих различные аспекты проекта. Указанием на содержимое этих файлов являются их расширения. В среде разработки Visual Studio по расширениям файлов определяется способ обработки их содержимого в ходе построения.
В следующей таблице показаны общие файлы в проекте Visual Studio и их идентификатор с расширением файла.
| Расширение файла | Тип | Содержимое |
|---|---|---|
| .asmx | Оригинал | Файл развертывания. |
| .asp | Оригинал | ASP-файл. |
| ATP | Проект | Файл шаблона приложения проекта. |
| BMP, DIB, GIF, JPG, JPE, PNG | Ресурс | Файлы изображений общего характера. |
| BSC | Компиляция | Файл кода браузера. |
| .cpp, .c | Оригинал | Основные файлы исходного кода приложения. |
| CUR | Ресурс | Растровый графический файл курсора. |
| DBP | Проект | Файл проекта базы данных. |
| DISCO | Оригинал | Файл документа динамического обнаружения. Обеспечивает обнаружение веб-служб XML. |
| EXE, DLL | Проект | Исполняемые файлы или файлы библиотек динамической компоновки. |
| h. | Оригинал | Файл заголовка. |
| HTM, HTML, XSP, ASP, HTC, HTA, XML | Ресурс | Общие веб-файлы. |
| HXC | Проект | Файл справки проекта. |
| ICO | Ресурс | Растровый графический файл значка. |
| IDB | Компиляция | Файл состояния, содержащий сведения о зависимости между исходными файлами и определениями классов. Его можно использовать компилятором во время добавочной компиляции. Для задания имени IDB-файла используйте параметр компилятора /Fd . |
| .idl | Компиляция | Файл языка определения интерфейса. Дополнительные сведения см. в разделе Файл определения интерфейса (IDL-файл) для пакета Windows SDK. |
| ILK | Связывание | Файл инкрементной компоновки. Дополнительные сведения см. в разделе /INCREMENTAL. |
| MAP | Связывание | Текстовый файл, содержащий информацию для компоновщика. Для задания имени MAP-файла используйте параметр компилятора /Fm . Дополнительные сведения см. в разделе /MAP. |
| MFCRIBBON-MS | Ресурс | Файл ресурса, содержащий XML-код, определяющий кнопки, элементы управления и атрибуты MFC на ленте. Для получения дополнительной информации см. Ribbon Designer. |
| OBJ, O | Объектные файлы — скомпилированные, но не скомпонованные. | |
| PCH | Отладка | Файл предкомпилированных заголовков. |
| RC, RC2 | Ресурс | Файлы скриптов ресурсов для генерации ресурсов. |
| SBR | Компиляция | Промежуточный файл обозревателя исходного кода. Входной файл для BSCMAKE. |
| .SLN | Решение | Файл решения . |
| SUO | Решение | Файл параметров решения. |
| .txt | Ресурс | Текстовый файл, обычно README-файл. |
| VAP | Проект | Файл проекта Visual Studio Analyzer. |
| VBG | Решение | Файл совместимой группы проектов. |
| VBP, VIP, VBPROJ | Проект | Файл проекта Visual Basic. |
| VCXITEMS | Проект | Проект общих элементов для совместного использования файлов кода в нескольких проектах C++. Дополнительные сведения см. в разделе «Файлы проекта и решения». |
| VCXPROJ | Проект | Файл проекта Visual Studio. Дополнительные сведения см. в разделе «Файлы проекта и решения». |
| VCXPROJ.FILTERS | Проект | Используется при использовании Обозреватель решений для добавления файла в проект. Файл фильтров определяет, где в представлении дерева Обозреватель решений добавить файл на основе расширения имени файла. |
| VDPROJ | Проект | Файл развертывания проекта Visual Studio. |
| VMX | Проект | Файл проекта макроса. |
| VUP | Проект | Вспомогательный файл проекта. |
Сведения о других файлах, связанных с Visual Studio, см. в разделе Типы и расширения файлов в Visual Studio .NET.
Файлы проекта распределены по папкам в обозревателе решений. Visual Studio создает папку для исходных файлов, файлов заголовков и файлов ресурсов, но можно переорганизовать эти папки или создать новые. С помощью папок можно явно создавать логические группы файлов в иерархии проекта. Например, можно создать папки для хранения всех исходных файлов пользовательского интерфейса. Или папки для спецификаций, документации или наборов тестов. Имена папок должны быть уникальными.
При добавлении элемента в проект добавляется элемент во все конфигурации этого проекта. Элемент добавляется независимо от того, можно ли создавать его. Например, если добавить элемент в проект с именем MyProject, то этот элемент появится также в отладочной (Debug) и окончательной (Release) конфигурациях проекта.