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

У меня есть решение со многими проектами .NET Core. Я сделал обновления NuGet для всего проекта, и теперь, когда я пытаюсь построить, я получаю следующие ошибки (для некоторых проектов - не все):

Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x64, win81-x64, win8-x64, win7-x64'. Possible causes:
1. The project has not been restored or restore failed - run `dotnet restore`
2. The project does not list one of 'win10-x64, win81-x64, win8-x64, win7-x64' in the 'runtimes' section.
3. You may be trying to publish a library, which is not supported. Use `dotnet pack` to distribute libraries.

Что, по-видимому, помогло, это сообщение, которое я нашел здесь Не удается найти цель выполнения для среды .NETCoreApp = v1, совместимую с одной из целевых сред выполнения

Я добавил следующие неудачные проекты:

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

Это, похоже, исправить проблему. Но мой вопрос в том, почему это происходило только по некоторым проектам? Проекты, которые не выдавали ошибку, не имеют такого определения времени исполнения в своем файле project.json.

Что именно означает это определение времени выполнения? как это влияет на мою способность работать на других ОС, таких как linux или mac?

Ответ 1

Что именно означает это определение времени выполнения?

runtimes перечисляет время выполнения, поддерживаемое нашим пакетом. Листинг времени выполнения необходим для автономных развертываний. Развертывание является самодостаточным, когда оно приносит свое собственное время выполнения.

Как мы узнаем, является ли наше развертывание самодостаточным? dependencies укажите пакеты, от которых зависит наш пакет. Эти зависимости бывают трех типов.

  • build пакет предназначен только для сборки и не является частью развертывания
  • platform пакет будет зависеть от предустановленной среды выполнения
  • default ни один из этих

Если наша зависимость "Microsoft.NETCore.App" относится к типу default, то она самодостаточна, и нам нужно будет принести свои собственные временные ряды. Если он имеет тип platform, то он зависит от структуры.

почему это происходило только по некоторым проектам?

Это произойдет только в проектах, которые являются автономными развертываниями. Если вы посмотрите на те проекты, для которых не требуется свойство runtimes, вы обнаружите, что они либо библиотеки классов, либо зависимые от структуры.

автономное развертывание

 "frameworks": {
   "netcoreapp1.0": {
     "dependencies": {
       "Microsoft.NETCore.App": {
          "version": "1.0.0"
       }
     }
   }
 },
 "runtimes": {
   "win10-x64": {},
   "osx.10.10-x64": {}
 }

зависимое от платформы развертывание

 "frameworks": {
   "netcoreapp1.0": {
     "dependencies": {
       "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
       }
     }
   }
 }

библиотека классов

 "frameworks": {
   "netstandard1.6": {}
 }

как это влияет на мою способность работать на других os, таких как linux или mac?

Это не так. Windows, Mac OS и Linux могут либо иметь предварительно установленную среду выполнения, либо приложить приложение к своей собственной среде выполнения.

См. также