Создайте файл .exe в .NET Core RC2

Каждый раз, когда я создаю проект с использованием новых шаблонов .NET Core RC2, я не, снабженный исполняемым файлом. EXE. Если я удалю F5 для отладки моего консольного приложения, он отлично работает через

C:\Program Files\dotnet\dotnet.exe 

приложения. И если я использую

dotnet run 

в папке, она отлично работает. Но я не вижу возможности запуска приложения без инструментов .NET Core CLI.

Содержимое моего

 bin\Debug\netcoreapp1.0\
Папка

выглядит следующим образом:

Структура папки бинов

Как вы видите, нет файла EXE. Просто dll.

Я что-то пропускаю? Или что-то не так с моим файлом project.json?

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0-rc2-3002702"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  }
}

Спасибо!

Ответ 1

В .NET Core есть 2 модели приложений:

  • Портативные приложения: сильно вдохновленные "консольными приложениями DNX", эти приложения не производят файлы .exe и вместо этого исполняются общей средой выполнения .NET Core (чья версия определяемый пакетом Microsoft.NETCore.App, благодаря специальному атрибуту type: platform). Для использования портативных приложений на компьютере должна быть установлена ​​соответствующая среда выполнения .NET Core. Если точная версия не найдена, при запуске dotnet run возникает исключение.

  • Автономные приложения: автономные приложения действительно похожи на старые старые консольные приложения .NET, поскольку они создают файлы .exe. Среда выполнения .NET Core не должна устанавливаться на компьютере, поскольку она непосредственно встроена в само приложение.

В настоящее время вы используете первую модель. Чтобы использовать автономную модель, вам необходимо настроить project.json:

  • Добавьте раздел runtimes, чтобы отобразить объекты, на которые будет нацелено ваше приложение (например, win7-x64 или ubuntu.14.04-x64). Вы можете найти полный список здесь.
  • Удалите зависимость Microsoft.NETCore.App. Вместо этого вы можете заменить его на этот пакет: "NETStandard.Library": "1.5.0-rc2-24027".

Вот пример автономного приложения:

{
  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true,
    "warningsAsErrors": true
  },

  "dependencies": {
    "Microsoft.Extensions.Configuration.Binder": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.CommandLine": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final",
    "Microsoft.Extensions.DependencyInjection": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final",
    "NETStandard.Library": "1.5.0-rc2-24027"
  },

  "frameworks": {
    "net451": { },

    "netcoreapp1.0": {
      "dependencies": {
        "System.Net.Ping": "4.0.0-rc2-24027"
      },

      "imports": [
        "dnxcore50",
        "dotnet5.6",
        "portable-net451+win8"
      ]
    }
  },

  "runtimes": {
    "win7-x64": { }
  }
}

Ответ 2

Ответ находится в документации с полными шагами.

Вы можете создать два типа развертываний для приложений .NET Core:

  • Рациональное развертывание
  • Самостоятельное развертывание

Для исполняемого файла .EXE следует использовать Самостоятельное развертывание.

Ответ 3

Шаг 1: удалите "type": "platform", из Project.json в разделе frameworks

Шаг 2: добавьте раздел времени выполнения в ваш project.json. Обратите внимание, что каждый раздел разделяется запятой. Добавьте время выполнения. ниже - всего лишь пример выигрыша 10.

"runtimes": {
       "win10-x64": {}      
     }

Шаг 3: команда восстановления dotnet в вашем проекте. (откройте cmd, перейдите в папку проекта, где есть папка src, запустите регенератор dotnet)

шаг 4: dotnet pack шаг 4: dotnet build -r win10-x64 - или просто построить.

Шаг 5: вы можете заметить, что .exe создается под debug/netcore/win10/

Ответ 4

В ASP.NET Core попробуйте изменить приложение type на default, в project.json:

"Microsoft.NETCore.App": {
  "type": "default",
  "version": "1.0.0-*"
}