Обратил внимание, что в папке с запускным файлом из прошлой статьи (пример на WPF), после компиляции присутствуют ещё несколько файлов:
SingleInstance.deps.json
SingleInstance.dll
SingleInstance.exe
SingleInstance.pdb
SingleInstance.runtimeconfig.dev.json
SingleInstance.runtimeconfig.json
При этом раньше в результате компиляции получалось только три файла:
SingleInstance.exe
SingleInstance.exe.config
SingleInstance.pdb
▶ ▶ ▶ ▶ ▶
Я перенёс файл SingleInstance.exe на другой диск и попытался его запустить, но ничего не произошло. Тогда я перенёс также файл SingleInstance.dll. на этот раз, при попытке запустить приложение, я получил ошибку:
To run this application, you must install .NET Core.
Would you like to download it now?
Вообще у меня вроде как уже установлен необходимый пакет, ну да ладно — скачал и установил, но всё равно ошибка сохранилась.
dotnet --list-runtimes
Про файлы базы данных программ (PDB) написано много всего. Но я всё равно не понял, зачем это нужно в релизе.
Вот его содержимое:
{
"runtimeOptions": {
"tfm": "netcoreapp3.1",
"framework": {
"name": "Microsoft.WindowsDesktop.App",
"version": "3.1.0"
}
}
}
Это конечно поменьше, но всё равно странно, зачем столько сложностей. Хотя вот здесь или здесь всё разложено по полочкам, так что можно почитать. Покопавшись в инете, нашёл способ запаковать всё это в один файл, чтобы в дальнейшем подобных недоразумений не возникало. Делается это с помощью «публикации».
Публикация приложения
1. В открытом проекте выбираем конфигурацию сборки Release:
2. В меню выбираем ▶
3. В окошке запроса выбираем режим публикации (в папку):
4. Нажав кнопку , указываем папку для публикации:
5. После нажатия кнопки нужно будет отобразить все настройки, нажав на кнопку :
6. Здесь нам нужно обязательно выбрать целевую платформу (в моём случае это win-x64), а также отметить опцию :
7. После сохранения изменений, нажимаем кнопку :
Вот теперь у нас получается только один запускной файл (если вы ранее отключили генерацию файла .pdb, о котором написано в начале статьи, то его не будет).
Update 13.02.23
Сегодня столкнулся с тем, что инструкция, описанная выше не работает по той причине, что в VS Community 2019 (версии 16.11.23) уже нет этих настроек. При публикации нам не предлагают настройки.
В связи с этим можно запустить публикацию из командной строки ▶
dotnet publish -r win-x64 /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true --output "C:\Users\Denis\source\repos\SingleInstance\publish"
Узнать текущую версию .NET можно из консоли:
dotnet --list-sdks
Вывод на экран должен быть примерно таким:
7.0.102 [C:\Program Files\dotnet\sdk]
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024