Сборка.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:
- Зависит от платформы
- Автономное развертывание
Для запускаемого файла.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-*"
}