none
КАК ПОЛУЧИТЬ EXE в VISUAL STUDIO 2019 RRS feed

  • Вопрос

  • Все перепробовал и пересобирать решение и проект, комплируется код исключительно в DLL. 

    Я так полагаю что студия думает будто я буду самолично эту библиотеку вызывать через командную строку чтобы ей воспользоваться или что.... 

    Написал простенькую программу типа Hello World. 


    При компиляции получаю вот это
    1>------ Перестроение всех файлов начато: проект: FirstProgramm, Конфигурация: Debug x64 ------
    1>FirstProgramm -> C:\Users\Юлиан Дель-Кампо\source\repos\Hello world\bin\x64\Debug\netcoreapp2.1\FirstProgramm.dll
    ========== Перестроение всех проектов: успешно: 1, с ошибками: 0, пропущено: 0 ==========

    Что делать, как получить ексешник? 


    18 апреля 2019 г. 8:33

Ответы

  • Да, "dotnet app.dll". Делать переход в каталог вроде не нужно, так как он прописывается в PATH.

    "а люди, придумавшие такой способ старта приложения не думали каково будет конечному пользователю" 

    Обычно создается инсталлятор, который создает ярлык на рабочем столе или в системном меню. Пользователь просто нажимает на ярлык и не задумывается, какой именно тип файла запускается. 

    "раз в студии изначально отсутсвует  компиляция в exe как таковая, значит либо мир с ума сходит либо я чего то не недопонимаю."

    Прочитайте внимательно статью, ссылку на которую я дал. В .NET Core "компиляция" (точнее построение) - это процесс получения DLL, не привязанной к конкретной ОС. Получение исполняемых файлов, заточенных под конкретную ОС, это отдельный процесс, называемый публикацией. Он отделен от построения, так как на этапе отладки без разницы, что именно запускать; заточенные под конкретные ОС пакеты нужны только на этапе развертывания готового приложения.

    Вроде это не сильно отличается от Java, где компилятор стандартно выдает кроссплатформенный JAR-файл, а для получения EXE нужны дополнительные действия?

    • Помечено в качестве ответа JULIANDC 19 апреля 2019 г. 3:47
    18 апреля 2019 г. 18:58

Все ответы

  • "Я так полагаю что студия думает будто я буду самолично эту библиотеку вызывать через командную строку чтобы ей воспользоваться или что.... "

    Вы будете смеяться, но ответ - "Да"... В .NET Core стандартный вариант - это распространение DLL, запускаемого через команду "dotnet" командной строки. Причина в том, что .NET Core работает на многих ОС, не все из которых используют формат EXE (PE) для исполняемых файлов, а способ с командной строкой универсален для всех ОС.

    Чтобы сгенерировать для приложения обычный EXE, необходимо сконфигурировать проект определенным образом: https://blogs.msdn.microsoft.com/luisdem/2017/03/19/net-core-1-1-how-to-publish-a-self-contained-application/

    18 апреля 2019 г. 9:41
  • Ну ладно, предположим я хочу использовать нативный метод запуска проекта, вот мне дали эту библиотеку, 

    что я с ней должен сделать как конечный пользователь чтобы ее запустить? простите, я новенький в Csharp знаю некоторые основы  кодинга т.к. раньше увлекался java,поэтому могу спрашивать глупые и очевидные вещи...

    что то типа:
    0) run CMD

    1)cd до директории с  c файлом dotnet

    2)dotnet    -mylib.dll
    ??

    а люди, придумавшие такой способ старта приложения не думали каково будет конечному пользователю, 
    ему то зачем эти дебри с командной строкой ? 
    раз в студии изначально отсутсвует  компиляция в exe как таковая, значит либо мир с ума сходит либо я чего то не недопонимаю.

    18 апреля 2019 г. 17:27
  • Да, "dotnet app.dll". Делать переход в каталог вроде не нужно, так как он прописывается в PATH.

    "а люди, придумавшие такой способ старта приложения не думали каково будет конечному пользователю" 

    Обычно создается инсталлятор, который создает ярлык на рабочем столе или в системном меню. Пользователь просто нажимает на ярлык и не задумывается, какой именно тип файла запускается. 

    "раз в студии изначально отсутсвует  компиляция в exe как таковая, значит либо мир с ума сходит либо я чего то не недопонимаю."

    Прочитайте внимательно статью, ссылку на которую я дал. В .NET Core "компиляция" (точнее построение) - это процесс получения DLL, не привязанной к конкретной ОС. Получение исполняемых файлов, заточенных под конкретную ОС, это отдельный процесс, называемый публикацией. Он отделен от построения, так как на этапе отладки без разницы, что именно запускать; заточенные под конкретные ОС пакеты нужны только на этапе развертывания готового приложения.

    Вроде это не сильно отличается от Java, где компилятор стандартно выдает кроссплатформенный JAR-файл, а для получения EXE нужны дополнительные действия?

    • Помечено в качестве ответа JULIANDC 19 апреля 2019 г. 3:47
    18 апреля 2019 г. 18:58
  • Да, вполне, спасибо за развернутый ответ!) 
    19 апреля 2019 г. 3:47