автономное приложение ASP.Net Core не работает на Mac

Есть идеи, как найти причину этой проблемы? Терминал Mac просто отвечает «команда не найдена» при попытке запустить приложение ядра ASP.NET, опубликованное с использованием автономного развертывания.

  • с использованием .NET Core SDK v.1.1
  • приложение представляет собой демонстрационный код, взятый из этого блога: https://blog.kloud.com.au/2017/02/14/running-vuejs-on-aspnet-core-apps/
  • развертывание выполняется, как описано здесь Скоттом Хансельманом: http://www.hanselman.com/blog/SelfconhibitedNETCoreApplications.aspx
  • указанная среда выполнения "osx.10.12-x64". Пытался запустить его на Mac Mini с установленным Intel Core 2 Duo и macOS Sierra.
  • Нет проблем с использованием развертывания «win10-x64» на машине Win10, на которой не установлено .NET Core.

person Ossan Dust    schedule 22.02.2017    source источник
comment
Какая команда вызвала эту ошибку и что ls выводит в той же папке? Вы не раскрываете свои шаги с достаточной информацией.   -  person Lex Li    schedule 23.02.2017
comment
Тестовое приложение называется VueTest, поэтому развертывание OSX содержит файл VueTest, который я пытаюсь запустить: команда возврата VueTest или sudo VueTest не найдена. Папка содержит около 200 файлов, а это все время выполнения ядра .NET (около 50 МБ, в отличие от около 10 МБ, когда я использую развертывание, зависящее от платформы, а не автономное).   -  person Ossan Dust    schedule 23.02.2017
comment
Я загрузил полное развертывание OSX здесь: tinybox.rocks/vuetest_osx_10_12_x64.zip Рабочий развертывание Win10 находится здесь: tinybox.rocks/vuetest_win10_x64.zip Содержимое двух папок приложений практически идентично, за исключением VueTest.exe (win) в отличие от VueTest (osx) и нескольких .dll в Windows (например, coreclr.dll), которые являются файлами .dylib в osx (например, libcoreclr.dylib)   -  person Ossan Dust    schedule 23.02.2017
comment
Вы должны запустить его как ./VueTest, если вы научились использовать macOS ABC.   -  person Lex Li    schedule 23.02.2017
comment
это неловко ... Конечно, ты прав, и это действительно решает проблему. Очевидно, что я новичок в Mac / Linux. Лекс Ли. Я ценю, что ты нашел время, чтобы отреагировать на такую ​​глупую ошибку.   -  person Ossan Dust    schedule 23.02.2017
comment
К сожалению, сейчас у меня все еще та же проблема в Linux. Я установил новую 64-разрядную виртуальную машину Debian 8 и скопировал на нее автономное развертывание debian (созданное для среды выполнения debian.8-x64). Здесь также находятся файлы: tinybox.rocks/vuetest_debian_8_x64.zip И снова команда не найдена, когда я выполняю sudo ./VueTest. Не зная, какие предварительные условия необходимы для запуска автономного приложения ASP.Net Core, я следил за снимком экрана по адресу microsoft.com/net/core#linuxdebian и установил curl, libunwind8 и gettext. Надеюсь, я совершаю еще одну глупую ошибку ...   -  person Ossan Dust    schedule 23.02.2017
comment
У меня нет доступа к вашей машине, поэтому могу только догадываться, что вы не запускаете chmod a+x VueTest. Это совсем не обидно, ведь в первый день мы все были новичками. Найдите достаточно хорошую книгу для начинающих по Linux / macOS, и вы скоро будете лучше знать, куда идти.   -  person Lex Li    schedule 23.02.2017
comment
И вы снова оказались на высоте ... Я просмотрел множество сообщений о людях, борющихся с .NET Core, и снова упустил из виду самые основные ошибки, подобные этой. В любом случае, у меня есть фиктивное приложение, работающее на Win10, Debian и OSX, без установки .NET Core. Впереди еще много испытаний, но пока я счастливый человек - теперь мне лучше сначала научиться базовым вещам. Еще раз спасибо, Лекс Ли!   -  person Ossan Dust    schedule 24.02.2017


Ответы (1)


OK. Итак, подведем итоги. Microsoft действительно делает приложения .NET Core кроссплатформенными, но разработчики Windows должны внимательно изучить некоторые основы macOS и Linux, прежде чем переходить к другой операционной системе.

Общие проблемы:

  1. Вам нужно запустить программу на терминале, вызвав ./executable_name, и это соглашение.
  2. Вам необходимо предоставить исполняемому файлу права на выполнение, вызвав chmod a+x executable_name (это требуется для большинства дистрибутивов Linux).
person Lex Li    schedule 23.02.2017