На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Модераторы: maxim84_, juice
  
> Вопрос по .NET Core
    Здраствуйте, только начал разбираться с .NET Core, т. к. есть необходимость запускать консольные приложения на Linux.

    Примерно неделю назад я делал первые експеременты и выяснил что для того чтоб у меня приложение работало я должен предварительно сделать Publish. Пример команды:
    ExpandedWrap disabled
      dotnet publish -c release -r ubuntu.16.04-x64

    Затем я заливаю весь набор файлов (примерно 70Mb) на линукс и запускаю приложение командой dotnet ConsoleApp.dll и все работает.

    Сегодня у меня чудесным образом начали работать приложения БЕЗ предварительной операции Publish. Хотя раньше так не работало точно, к сожалению не помню ошибки.
    Это содержание директории: https://i.imgur.com/BceiMqt.png (там нету кучи дотнетовских DLL-лок как после операции Publish).
    Команда dotnet ConsoleApp4.dll успешно запускает приложение на Linux.

    Подскажите почему у меня могли внезапно заработать приложения без операции Publish? Может сделался какой-то auto-update для .NET Core Runtime?
    Для чего тогда существует команда Publish если работает все без нее?
    Поясните также на пальцах для чего нужна команда Restore. Просто интересно знать

    Спасибо
    Сообщение отредактировано: 2005fs -
      Цитата 2005fs @
      Подскажите почему у меня могли внезапно заработать приложения без операции Publish?

      Судя по всему у тебя все зависимости присутствовали на Linux. Поэтому и завелось.

      https://docs.microsoft.com/ru-ru/dotnet/cor...?tabs=netcore21


      Цитата 2005fs @
      Поясните также на пальцах для чего нужна команда Restore. Просто интересно знать

      Восстанавливает зависимости. Например ты добавил какую то зависимость в проект, от какого то Nuget пакета. Перенес свой проект на другую систему, без этого пакета. При попытке собрать - у тебя будет ошибка компиляции, т.к. нет соответствующей библиотеки, а ссылка в проекте на нее есть. Выполнив команду dotnet restore, ты как раз выкачаешь эту зависимость к себе в проект.
      Ну или как вариант, ты запилил новый проект. У тебя он использует какие то зависимости(например какой нибудь Nuget пакет), но ты ведь не будеш бинарники ложить под систему контроля версий, т.к. это лишено всякого смысла, они могут обновляться, выходить новые версии и т.п. Ты туда положишь только исходники. Но зависимость то у тебя в проекте есть. Соответственно тот кто возьмет твои исходники - не выкачает автоматически зависимости. И чтоб у него собралось, ему нужно их выкачать, это можно сделать либо утилитой nuget, ну или вот просто с помощью dotnet restore.
      Ну и обрати внимание:
      Цитата

      Начиная с пакета SDK для .NET Core 2.0 нет необходимости выполнять команду dotnet restore, так как она выполняется неявно всеми командами, которые требуют восстановления, например dotnet new, dotnet build и dotnet run.


      https://docs.microsoft.com/ru-ru/dotnet/cor...?tabs=netcore2x

      Добавлено
      Цитата 2005fs @
      Затем я заливаю весь набор файлов (примерно 70Mb) на линукс и запускаю приложение командой dotnet ConsoleApp.dll и все работает.

      К слову, ты можешь прямо в Linux компилировать и публиковать свое приложение. Вот этими же самыми командами. Чтоб не заливать. Только установи .NET Core SDK на линукс.
      Сообщение отредактировано: Wound -
        Спасибо большое за ответ
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script Execution time: 0,0798 ]   [ 18 queries used ]   [ Generated: 22.07.19, 14:56 GMT ]