Архив за день: 13.10.2021



WPF: To run this application, you must install .NET Core

Обратил внимание, что в папке с запускным файлом из прошлой статьи (пример на WPF), после компиляции присутствуют ещё несколько файлов:
SingleInstance.deps.json
SingleInstance.dll
SingleInstance.exe
SingleInstance.pdb
SingleInstance.runtimeconfig.dev.json
SingleInstance.runtimeconfig.json

При этом раньше в результате компиляции получалось только три файла:
SingleInstance.exe
SingleInstance.exe.config
SingleInstance.pdb

Файлы с расширением .pdb нужны для отладки, поэтому я не понимаю, зачем они нужны в релизе. Генерацию подобных файлов можно отключить:
ProjectPropertiesBuildAdvanced[Output]Debugging Information = None

 

Я перенёс файл SingleInstance.exe на другой диск и попытался его запустить, но ничего не произошло. Тогда я перенёс также файл SingleInstance.dll. на этот раз, при попытке запустить приложение, я получил ошибку:

SingleInstance.exe

To run this application, you must install .NET Core.
Would you like to download it now?

 

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

Посмотреть список установленных сред выполнения .NET можно такой командой в PowerShell:

dotnet --list-runtimes

 

Про файлы базы данных программ (PDB) написано много всего. Но я всё равно не понял, зачем это нужно в релизе.

Приложение удалось запустить после того, как я перенёс третий файл: SingleInstance.runtimeconfig.json.

 

Вот его содержимое:

{
  "runtimeOptions": {
    "tfm": "netcoreapp3.1",
    "framework": {
      "name": "Microsoft.WindowsDesktop.App",
      "version": "3.1.0"
    }
  }
}

Это конечно поменьше, но всё равно странно, зачем столько сложностей. Хотя вот здесь или здесь всё разложено по полочкам, так что можно почитать. Покопавшись в инете, нашёл способ запаковать всё это в один файл, чтобы в дальнейшем подобных недоразумений не возникало. Делается это с помощью «публикации».

Публикация приложения

1. В открытом проекте выбираем конфигурацию сборки Release:

2. В меню выбираем BuildPublish Имя_Вашего_Проекта
3. В окошке запроса выбираем режим публикации (в папку):

4. Нажав кнопку Next, указываем папку для публикации:

5. После нажатия кнопки Finish нужно будет отобразить все настройки, нажав на кнопку Show all settings:

6. Здесь нам нужно обязательно выбрать целевую платформу (в моём случае это win-x64), а также отметить опцию Produce single file:

7. После сохранения изменений, нажимаем кнопку Publish:

Вот теперь у нас получается только один запускной файл (если вы ранее отключили генерацию файла .pdb, о котором написано в начале статьи, то его не будет).