Как создать exe файл в visual studio 2019
Перейти к содержимому

Как создать exe файл в visual studio 2019

  • автор:

Руководство. Создание приложения

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

Установите пример приложения

Пример кода, используемый в этом руководстве, приведен в примерах WPF. Чтобы клонировать репозиторий, нажмите зеленую кнопку клонирования GitHub и выберите «Клонировать» в Visual Studio. Вы можете выбрать расположение на локальном жестком диске, чтобы создать копию содержимого репозитория. Репозиторий содержит множество решений. Если Visual Studio открывает одно из решений, закройте решение, а затем выберите «Открыть проект или решение» и перейдите к расположению, в котором клонировали репозиторий, и в этом разделе найдите метод GettingStarted/WalkthroughFirstWPFApp/csharp/ExpenseItIntro.sln , чтобы работать в C#, или GettingStarted/WalkthroughFirstWPFApp/vb/ExpenseItIntro2.sln для работы в Visual Basic.

Создание настраиваемой конфигурации сборки

При создании решения конфигурации сборки отладки и выпуска и их целевых объектов платформ по умолчанию определяются для решения автоматически. Затем вы можете настроить эти конфигурации или создать собственные. Конфигурации указывают тип сборки. Целевые платформы указывают операционную систему, на которое ориентировано приложение для этой конфигурации. Дополнительные сведения см. в разделе «Общие сведения о конфигурациях сборки», «Настройка проектов для целевых платформ» и «Практическое руководство. Настройка конфигураций отладки и выпуска».

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

Создание конфигурации сборки

  1. Откройте диалоговое окно Диспетчер конфигураций. Screenshot of the Build menu, Configuration Manager command.
  2. В списке Активная конфигурация решения выберите . Screenshot showing creating a new solution configuration.
  3. В диалоговом окне Создание конфигурации решения введите для новой конфигурации имя Test , скопируйте параметры из существующей конфигурации Отладка и нажмите кнопку ОК. Screenshot of the New Solution Configuration Dialog Box.
  4. В списке Активная платформа решения выберите .
  5. В диалоговом окне Создание платформы решения выберите x64 и не копируйте параметры из платформы x86. Screenshot of New solution platform dialog box.
  6. Нажмите кнопку ОК. Активная конфигурация решения была изменена на Тест, а для активной платформы решения задано значение x64. Screenshot of Configuration Manager with Test configuration.
  7. Выберите Закрыть.

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

Screenshot of Solution Configurations dropdown list on the Standard toolbar.

  1. Откройте диалоговое окно Диспетчер конфигураций. Screenshot of the Build menu Configuration Manager command.
  2. В списке Активная конфигурация решения выберите . Screenshot showing creating a new solution configuration.
  3. В диалоговом окне Создание конфигурации решения введите для новой конфигурации имя Test , скопируйте параметры из существующей конфигурации Отладка и нажмите кнопку ОК. Screenshot showing creating a Test configuration in the New Solution Configuration dialog box.
  4. В столбце «Платформа» разверните раскрывающийся список и выберите «Создать»,> чтобы создать новую платформу проекта. Screenshot showing creating a new project platform in the Configuration Manager.
  5. В диалоговом окне «Новая платформа проекта» выберите x64 и не копируйте параметры из платформы x86. Screenshot of New solution platform dialog box.Если платформа решения x64 уже существует, не проверка поле «Создание активной платформы решения».
  6. Нажмите кнопку ОК. Активная конфигурация решения была изменена на Тест, а для активной платформы решения задано значение x64. Screenshot of Configuration Manager with Test configuration.
  7. Выберите Закрыть.

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

Screenshot of Solution Configurations dropdown list on the Standard toolbar.

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

Сборка приложения

Далее вам предстоит создать решение с помощью настраиваемой конфигурации сборки.

Выполните сборку решения.

  • В строке меню последовательно выберите Сборка>Собрать решение (или нажмите CTRL+SHIFT+B). Окно Вывод отображает результат сборки. Сборка успешно завершена.

Скрытие предупреждений компилятора

Далее мы добавим код, который приводит к созданию предупреждения компилятором.

  1. В проекте C# откройте файл ExpenseReportPage.xaml.cs. В методе ExpenseReportPage добавьте следующий код: int i; . ИЛИ В проекте Visual Basic откройте файл ExpenseReportPage.xaml.vb. В пользовательском конструкторе Public Sub New. добавьте следующий код: Dim i .
  2. Постройте решение.

Окно Вывод отображает результат сборки. Сборка была выполнена успешно, но были созданы предупреждения:

Screenshot of build warning in Output Window for Visual Basic.

Screenshot of build warning in Output Window for C#.

Screenshot of build warnings in Output window for C#.

Screenshot of build warnings in Output window for Visual Basic.

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

Скрытие определенного предупреждения C#

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

Screenshot of Build page, Project Designer.

Screenshot of Build section in Project Properties.

Screenshot of Output Window for C# with no build warnings

Screenshot of Output window for C# with no build warnings

Отключение всех предупреждений сборки в Visual Basic

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

Compile page, Project Designer.

Screenshot of disabling warnings in the Compile tab of the Project Designer.

Screenshot of Output Window for Visual Basic with no build warnings.

Screenshot of Output window for Visual Basic with no build warnings.

Отображение дополнительных сведений о сборке в окне вывода

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

При отображении дополнительных сведений сборка будет занимать больше времени.

Изменение объема сведений в окне вывода

  1. Откройте диалоговое окно Параметры.

Screenshot of Options command on the Tools menu.

Screenshot of Tools, Options menu item.

Совет В окне Вывод можно искать содержимое, отобразив диалоговое окно Найти нажатием клавиш CTRL+F.

Создание сборки выпуска

Вы можете создать версию примера приложения, оптимизированную для поставки. Для сборки выпуска вы указываете, что исполняемый файл копируется в общую сетевую папку перед запуском сборки.

Указание сборки выпуска для Visual Basic

  1. Чтобы открыть конструктор проектов, выберите узел проекта в Обозреватель решений, щелкнув правой кнопкой мыши и выбрав «Свойства» (или нажмите клавиши ALT +ВВОД) или в меню «Вид«, выберите страницы свойств:

Screenshot of View, Property Pages menu item.

Screenshot of View, Property Pages menu item.

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

Build Solution command on the Build menu.

Screenshot of Build Solution command on the Build menu.

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

  1. Открывается Конструктор проектов.

Screenshot of View, Property Pages menu item.

Screenshot of View, Property Pages menu item.

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

Build Solution command on the Build menu.

Screenshot of Build Solution command on the Build menu.

Поздравляем! Вы успешно завершили работу с этим руководством.

См. также

  • Пошаговое руководство. Сборка проекта (C++)
  • Общие сведения о предварительной компиляции проектов веб-приложений ASP.NET
  • Пошаговое руководство. Использование MSBuild

Как создать exe файл в visual studio 2019

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

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

Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе «Анализ защищенности веб-приложений» �� Записаться бесплатно!

CTF с учебными материалами Codeby Games Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Развертывание с одним файлом

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

Размер одного файла в автономном приложении велик, так как он включает в себя среду выполнения и библиотеки платформы. В .NET 6 можно опубликовать trimmed , чтобы уменьшить общий размер приложений, совместимых с обрезкой. Вариант развертывания в виде одного файла можно сочетать с параметрами публикации ReadyToRun и Обрезка.

[ВАЖНО] Чтобы запустить одно файловое приложение в Windows 7, необходимо использовать среду выполнения .NET 6.0.3 или более поздней версии.

Пример файла проекта

Ниже приведен пример файла проекта, который указывает публикацию одного файла:

  Exe net6.0 true true win-x64   

Эти свойства имеют следующие функции:

  • PublishSingleFile . Включает публикацию одного файла. Кроме того, включает предупреждения для одного файла во время dotnet build .
  • SelfContained . Определяет, является ли приложение автономным или зависящим от платформы.
  • RuntimeIdentifier . Указывает тип операционной системы и ЦП , на которые вы ориентируетесь. Также задает по true умолчанию.

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

Файлы конфигурации среды выполнения, такие как *.runtimeconfig.json и *.deps.json, включаются в один файл. Если требуется дополнительный файл конфигурации, его можно разместить рядом с одним файлом.

Публикация однофайловых приложений

Опубликуйте приложение с одним файлом с помощью команды dotnet publish.

    Добавьте true в файл проекта. Это изменение создает одно файловое приложение при автономной публикации. В нем также отображаются предупреждения о совместимости с одним файлом во время сборки.

 true  

Необходимо задать в файле проекта, чтобы включить анализ файлов во время сборки, но также можно передать эти параметры в качестве dotnet publish аргументов:

dotnet publish -r linux-x64 -p:PublishSingleFile=true --self-contained false 

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

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

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

Снимок экрана: диалоговое окно параметров профиля с выделенными параметрами

В Visual Studio для Mac отсутствует возможность публикации приложения в виде одного файла. Вам потребуется опубликовать вручную, следуя инструкциям на вкладке CLI. Дополнительные сведения см. в статье Публикация приложений .NET с помощью .NET CLI.

Исключить файлы из внедрения

Некоторые файлы можно явно исключить из внедрения в один файл, задав следующие метаданные:

true 

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

  PreserveNewest true   

Добавление PDB-файлов в пакет

PDB-файл для сборки можно внедрить в саму сборку ( .dll ), используя параметр, приведенный ниже. Так как символы являются частью сборки, они также являются частью приложения:

embedded 

Например, добавьте следующее свойство в файл проекта сборки, чтобы внедрить PDB-файл в эту сборку:

 embedded  

Другие замечания

Приложения с одним файлом имеют все связанные PDB-файлы вместе с приложением, а не в пакете по умолчанию. Если вы хотите включить PDB-файлы в сборку для проектов, которые вы создаете DebugType , задайте для параметра значение embedded . См . раздел Включение PDB-файлов в пакет.

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

Собственные библиотеки

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

Чтобы внедрить эти файлы для извлечения и получить один выходной файл, задайте для свойства IncludeNativeLibrariesForSelfExtract значение true .

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

Если используется извлечение, файлы извлекаются на диск перед запуском приложения:

  • Если для переменной DOTNET_BUNDLE_EXTRACT_BASE_DIR среды задан путь, файлы извлекаются в каталог по такому пути.
  • В противном случае при запуске в Linux или macOS файлы извлекаются в каталог в папке $HOME/.net .
  • При запуске в Windows файлы извлекаются в каталог в разделе %TEMP%/.net .

Чтобы предотвратить незаконное изменение, эти каталоги не должны быть доступны для записи пользователями или службами с разными привилегиями. Не используйте /tmp или /var/tmp в большинстве систем Linux и macOS.

В некоторых средах Linux, например в systemd , извлечение по умолчанию не работает, так как $HOME не определено. В таких случаях рекомендуется задать $DOTNET_BUNDLE_EXTRACT_BASE_DIR явно.

Для systemd рекомендуется определить DOTNET_BUNDLE_EXTRACT_BASE_DIR в файле %h/.net единиц службы значение , которое systemd правильно расширяется $HOME/.net до учетной записи, на которой выполняется служба.

[Service] Environment="DOTNET_BUNDLE_EXTRACT_BASE_DIR=%h/.net" 

Несовместимость API

Некоторые API несовместимы с развертыванием с одним файлом. Приложения могут потребовать изменения, если они используют эти API. Если вы используете стороннюю платформу или пакет, возможно, они используют один из этих API и нуждаются в изменении. Распространенная причина многих проблем — это зависимость от путей к файлам или библиотекам DLL, поставляемых с приложением.

В таблице ниже приведены сведения об API библиотеки среды выполнения для использования с одним файлом.

API Примечание
Assembly.CodeBase Выдает исключение PlatformNotSupportedException.
Assembly.EscapedCodeBase Выдает исключение PlatformNotSupportedException.
Assembly.GetFile Выдает исключение IOException.
Assembly.GetFiles Выдает исключение IOException.
Assembly.Location Возвращает пустую строку.
AssemblyName.CodeBase Возвращает null .
AssemblyName.EscapedCodeBase Возвращает null .
Module.FullyQualifiedName Возвращает строку со значением или вызывает исключение.
Marshal.GetHINSTANCE Возвращает -1.
Module.Name Возвращает строку со значением .

Вот некоторые рекомендации по исправлению для распространенных сценариев:

  • Чтобы получить доступ к файлам, расположенным рядом с исполняемым файлом, используйте AppContext.BaseDirectory.
  • Чтобы найти имя файла исполняемого файла, используйте первый элемент Environment.GetCommandLineArgs()или, начиная с .NET 6, используйте имя файла из ProcessPath.
  • Чтобы не допустить доставку свободных файлов в целом, используйте внедренные ресурсы.

После обработки двоичных файлов перед объединением

Для некоторых рабочих процессов требуется постобработка двоичных файлов перед объединением. Распространенный пример — подписывание. Пакет SDK dotnet предоставляет точки расширения MSBuild, позволяющие обрабатывать двоичные файлы непосредственно перед объединением одного файла. Доступные API:

  • Целевой объект PrepareForBundle , который будет вызван до GenerateSingleFileBundle
  • Объект , содержащий все файлы, которые будут объединяться в пакет
  • Свойство AppHostFile , указывающее шаблон apphost. После обработки может потребоваться исключить apphost из обработки.

Чтобы подключиться к этому, необходимо создать целевой объект, который будет выполняться между PrepareForBundle и GenerateSingleFileBundle .

Рассмотрим следующий пример узла проекта Target .NET:

Вполне возможно, что инструментарию потребуется копировать файлы в процессе подписывания. Это может произойти, если исходный файл является общим элементом, не принадлежащим сборке, например, файл поступает из кэша NuGet. В этом случае ожидается, что средство изменит путь к соответствующему FilesToBundle элементу, указав измененную копию.

Сжатие сборок в однофайловых приложениях

Однофайловые приложения можно создавать с включенным сжатием во внедренных сборках. Задайте свойству EnableCompressionInSingleFile значение true . В одном создаваемом файле будут сжаты все внедренные сборки, что может значительно уменьшить размер исполняемого файла.

Однако из-за этого может снизиться производительность. При запуске приложения сборки распаковываются в память, что занимает некоторое время. Перед использованием рекомендуется измерить как изменение размера, так и стоимость запуска при включении сжатия. Влияние может значительно различаться в разных приложениях.

Проверка однофайловых приложений

Приложения с одним файлом можно проверить с помощью средства ILSpy. Средство может отображать все файлы, упакованные в приложение, и проверять содержимое управляемых сборок.

См. также

  • Развертывание приложений .NET Core
  • Публикация приложений .NET с помощью .NET CLI
  • Публикация приложений .NET Core с помощью Visual Studio
  • Команда dotnet publish

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Отладка приложения, которое не входит в решение 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-проекта для существующего приложения

  1. В Visual Studio последовательно выберите Файл>Открыть>Проект.
  2. В диалоговом окне Открыть проект выберите Все файлы проекта, если они еще не выбраны, в раскрывающемся списке рядом с полем Имя файла.
  3. Перейдите к EXE-файлу, выберите его и щелкните Открыть. Файл появится в новом временном решении Visual Studio.
  4. Запустите отладку приложения, выбрав команду выполнения, например Начать отладку в меню Отладка.

Чтобы импортировать приложение в решение Visual Studio

  1. Когда решение C++, C# или Visual Basic будет открыто в Visual Studio, выберите Файл>Добавить>Существующий проект.
  2. В диалоговом окне Открыть проект выберите Все файлы проекта, если они еще не выбраны, в раскрывающемся списке рядом с полем Имя файла.
  3. Перейдите к EXE-файлу, выберите его и щелкните Открыть. Файл появится как новый проект в текущем решении.
  4. Выберите новый файл и запустите отладку приложения, выбрав команду выполнения, например Начать отладку в меню Отладка.

Связанный контент

  • Параметры отладчика и подготовка
  • Безопасность отладчика
  • DBG-файлы

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

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