Зависимость Microsoft.Composition 1.0.27 не поддерживает структуру .NETCoreApp, Version = v1.1

Когда я обновляю раздел рамки:

"frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
      },
      "imports": "dnxcore50"
    }
  }

Я получаю сообщение об ошибке

Зависимость Microsoft.Composition 1.0.27 не поддерживает фреймворк .NETCoreApp, Version = v1.1.

С

"Microsoft.VisualStudio.Web.CodeGeneration.Tools"

: подчеркнуто

Ответ 1

Microsoft.Composition поддерживает .NET Framework 4.5, Windows 8 и WindowsPhone 8.1 среди других целей, это означает, что он должен работать.

Но он не нацеливается на netstandard1.x, в частности, и не на него netcoreapp1.x, поэтому вам нужно сообщить nuget через раздел импорта, чтобы также восстановить библиотеки PCL, которые нацелены на платформы выше:

"frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
      },
      "imports": ["dnxcore50", "portable-net45+win8"]
    }
}

Часть "portable-net45-win8" сообщает об этом, чтобы также восстановить PCL с объектами .NET 4.5 и Windows 8, так как они должны работать в 99% всех случаев с .NET Core (Windows Runtime основана на System.Runtime и .NET Core тоже, почему он работает).

Но НИКОГДА используйте import для восстановления не-PCL или PCL, которые не поддерживают как минимум win8/wpa8 и net45.

Обновление для csproj:

Чтобы сделать это в новой структуре проекта .csproj, вам нужно добавить

<PackageTargetFallback>$(PackageTargetFallback);dotnet5.6;dnxcore50;portable-net45+win8</PackageTargetFallback>

вместо этого. Если вы уверены, что не используете какие-либо пакеты, которые используют какие-либо из них, необязательно оставляйте dotnet5.6 и dnxcore50.

Ответ 2

Если вы имеете дело с файлами csproj, вы можете редактировать их и добавлять эту строку:

<PackageTargetFallback>$(PackageTargetFallback);dotnet5.6;portable-net45+win8</PackageTargetFallback>

Результат должен выглядеть так:

<PropertyGroup> <TargetFramework>netcoreapp1.1</TargetFramework> <PackageTargetFallback>$(PackageTargetFallback);dotnet5.6;portable-net45+win8</PackageTargetFallback> </PropertyGroup>

Вот как работает VS-конвертер, когда он обновляет project.json до csproj. Если вам нужны другие цели, вы можете поиграть с конвертированием файлов project.json в файлы csproj и увидеть результат.