Не удается найти целевой объект среды выполнения для framework.NETCoreApp=v1 совместим с одной из целевых сред выполнения

Я пытаюсь перенести Asp.Net основной проект RC1 для RC2 и следили за этим документация и следовал по - инструкции для миграции DNX в .NET CLI.

Я получаю следующую ошибку, когда я пытаюсь dotnet run:

не удается найти цель выполнения для framework '.NETCoreAPP, версия=v1.0' совместимость с одним из целевых сред выполнения: 'win10-x64, win81-x64, на Win8-x64, а с Win7-х64'. Вероятный причины:

  1. проект не был восстановлен или восстановление не удалось-запустите "dotnet restore"
  2. проект не перечисляет один из "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 во время выполнения.

https://www.microsoft.com/net/download/core#/current


Я получил эту ошибку, потому что я использовал невероятно сломанный менеджер пакетов 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.