Сборка.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- файл доступен. Просто длл.

Я что-то пропускаю? Или что-то не так с моим файлом 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"
    }
  }
}

Спасибо!

5 ответов

Решение

На самом деле в.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": { }
  }
}

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

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

  1. Зависит от платформы
  2. Автономное развертывание

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

Чтобы создать работоспособное приложение из консольного приложения.NET Core, вы можете использовать инструмент dotnet. Просто запустите в каталоге вашего проекта:

dotnet publish --runtime win7-x64

Это создает отдельное приложение (автономное развертывание; включает в себя все необходимые библиотеки, занимающие не менее 60 МБ на вашем диске). Конечно, вы также можете выбрать другие среды выполнения, такие как osx.10.11-x64 или же ubuntu.16.04-x64,

Если вы использовали конфигурацию по умолчанию (New Project -> Console App (.NET Core)), никаких изменений в любом файле конфигурации не требуется.

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

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

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

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

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

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

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

"Microsoft.NETCore.App": {
  "type": "default",
  "version": "1.0.0-*"
}
Другие вопросы по тегам