Не удается найти целевой объект среды выполнения для framework.NETCoreApp=v1 совместим с одной из целевых сред выполнения
Я пытаюсь перенести Asp.Net основной проект RC1 для RC2 и следили за этим документация и следовал по - инструкции для миграции DNX в .NET CLI.
Я получаю следующую ошибку, когда я пытаюсь dotnet run
:
не удается найти цель выполнения для framework '.NETCoreAPP, версия=v1.0' совместимость с одним из целевых сред выполнения: 'win10-x64, win81-x64, на Win8-x64, а с Win7-х64'. Вероятный причины:
- проект не был восстановлен или восстановление не удалось-запустите "dotnet restore"
- проект не перечисляет один из "win10-x64, win81-x64, win7-x64" в "runtimes"
Я dotnet restore
и вроде успешно завершена.
я обновил все соответствующие пакеты до RC2.
10 ответов
Я должен был сделать именно то, что говорится в сообщении об ошибке. При миграции из RC1 я не понимал, что мне нужно указать в своем .
в своем project.json
я добавил следующий раздел:
"runtimes": {
"win10-x64": { }
}
и я был готов идти.
Обновление 27 Февраля 2017
новые шаблоны проектов в Visual Studio 2017 RC больше не требуют указания времени выполнения (в project.json
или .csproj
) в заранее, если вы решите развернуть приложение как Framework Dependent Deployment
(FDD).
Если, однако, вы решили развернуть приложение с помощью Self-contained Deployment
(SCD), затем вам нужно будет указать все время выполнения, которое вы хотите, чтобы ваше приложение работало на заранее в своем .
Ниже приведен пример .csproj
файл для приложения, использующего метод развертывания SCD:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.0</TargetFramework>
<VersionPrefix>1.0.0</VersionPrefix>
<DebugType>Portable</DebugType>
<RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
</ItemGroup>
</Project>
см. этой ссылке для Больше информации, которая включает тщательное описание обоих типов вариантов развертывания, а также их преимуществ и недостатков.
я получил эту ошибку после обновления основного шаблона VS2015 до 1.0.1. Это было потому, что у меня есть PCL, который нацелен netstandard 1.4
Если вы не хотите указывать каждую среду выполнения, просто измените разметку зависимостей на Microsoft.NETCore.App
для этого:
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
в проект.json я изменил это (добавлен тип):
//"Microsoft.NETCore.App": "1.1.0",
"Microsoft.NETCore.App": { "version": "1.1.0", "type": "platform" },
теперь я могу снова строить :-)
обновление: теперь я могу построить снова, но не "бежать" на сайт.
вам нужно убедиться, что у вас есть среда выполнения и sdk:
*) средства Visual Studio включают .NET Core 1.0.1. Чтобы добавить поддержку .NET Core 1.1, необходимо также установить .NET Core 1.1 во время выполнения.
Я получил эту ошибку, потому что я использовал невероятно сломанный менеджер пакетов NuGet в Visual Studio 2015 для обновления моего проекта.в JSON зависимостей. Получилось так:
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
}
}
}
в:
"dependencies": {
"Microsoft.NETCore.App": "1.1.0"
},
"frameworks": {
"netcoreapp1.0": {}
}
пока-пока, определение платформы!
Если Вы читаете эти две ссылки:
во-первых, https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/using-with-xplat-cli
и
второе, https://docs.microsoft.com/en-us/dotnet/articles/core/rid-catalog
вы увидите, что вы можете создать полностью портативную версию, используя следующий фрагмент в корневом элементе зависимостей в project.формат JSON. Нет необходимости указывать время выполнения, как это это среда выполнения основного уровня, которая должна быть агностической платформой или известна как "зависимая от фреймворка"
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
или вы можете создать для нескольких целевых платформ ("автономные приложения"), удалив элемент Type: platform следующим образом:
добавьте это в корневой элемент зависимостей в project.в JSON
"Microsoft.NETCore.App": {
"version": "1.0.1"
}
и добавьте это как новый элемент корневого уровня
"runtimes": {
"win10-x64": {}, /* one or more RIDs */
"osx.10.10-x64": {}
},
для нескольких целевых требуется указать имена платформ, известные как ".NET Core Идентификаторы времени выполнения (RID)" список из них можно найти по второй ссылке выше. Он включает в себя множество вкусов Windows, Linux и OS X.
для хорошего обзора различных вариантов развертывания вы также можете прочитать эту страницу:
https://docs.microsoft.com/en-us/dotnet/articles/core/deploying/index
из приведенной выше ссылки:
можно создать два типа развертываний для приложений .NET Core:
развертывание, зависящее от фреймворка
как следует из названия, фреймворк-зависимое развертывание (FDD) полагается на общую общесистемную версию .NET Core для присутствия в целевой системе. Поскольку .NET Core уже присутствует, ваше приложение также переносится между установками .NET Core. Ваше приложение содержит только свой собственный код и любые сторонние зависимости, которые находятся за пределами библиотек .NET Core. FDDs содержат .dll файлы, которые могут быть запущены с помощью утилита dotnet из командной строки. Например, приложение dotnet ограничителя.dll запускает приложение с именем app.
автономное развертывание
В отличие от FDD, автономное развертывание (SCD) не зависит от наличия общих компонентов в целевой системе. Все компоненты, включая библиотеки .NET Core и среду выполнения .NET Core, включены в приложение и изолированы от других приложений .NET Core. SCDs включает исполняемый файл (например, приложение.exe на платформах Windows для приложения с именем app), которое является переименованной версией узла .NET Core для конкретной платформы, и a .dll-файл (например, app.dll), который является фактическим приложением.
в моем случае я только что обновил все пакеты nuget до их последних версий, и nuget изменил мою "Microsoft".NETCore.Базовый пакет приложений следующее:
"Microsoft.NETCore.App": "1.1.0"
Я изменил его обратно в форму, и все работало:
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
}
до свидания 3 часа моей жизни....
Если вы запустите dotnet new и посмотрите на выходной проект json, вы увидите, что моникеры изменились.
внести изменения в свой проект.json следующим образом:
"dependencies": {},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"
}
},
"imports": "dnxcore50"
}
}
Я нашел одну полезную ссылку из комментария svick на следующей странице: https://github.com/dotnet/cli/issues/2442
я обнаружил, что вам нужно следующее в проекте.формат JSON. Вот что требовалось, чтобы исправить мою ошибку:
зависимости
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.1",
"type": "platform"
},
}
рамки
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dotnet5.6",
"portable-net45+win8"
]
}
},
время работы
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
можно добавить среды выполнения, если планируется публикация в IIS. Пожалуйста, посмотрите что-то следующее:
"runtimes": {
"win10-x64": {}
},
вот общий совет, который хорошо сработал для меня. Когда мои вещи ломаются, я иногда творю. значение по умолчанию ASP.NET основное приложение либо веб-сайт, либо пустой веб-api для просмотра зависимостей в проекте.json и в других местах. Так часто можно поймать много разных вещей. Ответы выше находятся на месте, но я думал, что напишу это здесь, Если кто-то захочет отделить логику больше в общем формате шаблона, который ASP.NET основные виды использования.
в Windows 7 с VS 2015, soluiton после обновления до netcore 1.1.2 изменял проект.файл JSON следующим образом:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": "1.1.2"
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50" //This line must disappear
}
},
"runtimes": { //
"win7-x64": {} //Add this lines
} //
}
после изменения этого зависимости будут обновляться и viola.