依赖 Microsoft.Composition 1.0.27 不支持框架 .NETCoreApp,Version=v1.1

The dependency Microsoft.Composition 1.0.27 does not support framework .NETCoreApp,Version=v1.1

当我将框架部分升级到:

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

我遇到错误

The dependency Microsoft.Composition 1.0.27 does not support framework .NETCoreApp,Version=v1.1.

"Microsoft.VisualStudio.Web.CodeGeneration.Tools"

:带下划线

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" 部分告诉它,还可以使用 .NET 4.5 恢复 PCLs 和 Windows 8 个目标,因为它们应该在 99% 的情况下使用 . NET Core(Windows 运行时基于 System.Runtime 而 .NET Core 也是,这就是它工作的原因)。

但是从不使用import来恢复非PCL或PCL至少不支持win8/wpa8和 net45.

csproj 更新:

要在新的 .csproj 项目结构中执行此操作,您需要添加

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

相反。当您确定不使用任何使用这些的包时,可以选择省略 dotnet5.6dnxcore50

如果您正在处理 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 文件并查看输出。