Невозможно создать исполняемый файл dmg для Mac OS с .NET Core 2.1

Я учусь развертывать приложения .NET Core на нескольких платформах, и я не могу создать исполняемый файл .dmg для Mac OS.

Это моя среда разработки:

  • 64-разрядная версия Windows 10 Professional
  • Visual Studio 2017 Professional с последним обновлением
  • Ориентация на .NET Core 2.1

Чтобы протестировать процесс развертывания, я создал простое консольное приложение .NET Core "hello world". Я выполнил шаги в официальном MSDN веб-сайт, чтобы развернуть приложение в Mac OS в Visual Studio как пакет автономного развертывания, но я не вижу .dmg файла в опубликованном целевом каталоге. Я вижу только .dll файлы и другие файлы, относящиеся к проекту. Я также попытался опубликовать в Mac OS как пакет автономного развертывания через интерфейс командной строки .NET Core, выполнив следующие команды, но это все равно не привело к созданию исполняемого файла .dmg:

dotnet publish -c Release --self-contained -r osx-x64

Я также пробовал:

dotnet publish -c Release --self-contained -r osx.10.13-x64

Как создать исполняемый файл .dmg?

Спасибо.


person rajndev    schedule 06.04.2019    source источник
comment
Я не могу ответить на прямой вопрос, но у меня есть поправка на то, как вы думаете об этом: файл .dmg не является исполняемым файлом, это формат контейнера, немного похожий на .zip или, может быть, .iso. Он используется для защиты фактического исполняемого файла (или пакета установщика, или чего-то еще) при его распространении / передаче / хранении и т. Д.   -  person Gordon Davisson    schedule 07.04.2019


Ответы (1)


A. dmg не является исполняемым файлом, это образ диска (как писал Гордон, что-то вроде .iso). Его можно использовать для распространения программного обеспечения, и я бы не ожидал, что ваши инструменты будут выводить .dmg (как и собственные инструменты разработки Apple).

Пакет «Самостоятельное развертывание» в этом случае означает, что среда выполнения .NET статически связана внутри вашего исполняемого файла, поэтому конечному пользователю не требуется установка среды выполнения .NET (за счет увеличения размера вашего двоичного файла). См. автономным. NET Core.

Ваша сборка должна создавать двоичный файл MACH (вероятно, с тем же именем, что и ваш проект, без какого-либо расширения). Вы можете распространять этот двоичный файл по своему усмотрению, в том числе используя .dmg. Вы можете использовать hdiutil для создания образов дисков Apple и управления ими.

person TheNextman    schedule 07.04.2019
comment
Красиво объяснено. Я вижу файл elf без расширения в каталоге публикации. Это фактический исполняемый файл для Mac, созданный методом развертывания? Могу ли я просто переименовать этот файл, чтобы добавить расширение .app, а затем использовать этот файл для создания образа .dmg с помощью hdiutil? - person rajndev; 07.04.2019
comment
Нет. .App - это пакет различных файлов (исполняемый файл, ресурсы и т. Д.). См. developer.apple.com/library/archive. / documentation /. Нет причин, по которым вы не можете создать .app для своего исполняемого файла, но вам нужно будет создать правильную структуру. - person TheNextman; 07.04.2019
comment
Незначительное исправление: macOS использует формат Mach-O для исполняемых файлов, а не elf. - person Gordon Davisson; 08.04.2019
comment
Спасибо, исправил @GordonDavisson - person TheNextman; 08.04.2019