Asp.net-Core

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

  • June 9, 2017

當我將框架部分升級到:

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

我收到錯誤

依賴 Microsoft.Composition 1.0.27 不支持框架 .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 和 Windows 8 目標恢復 PCL,因為它們應該在 99% 的情況下使用 .NET Core(Windows 執行時基於 System.Runtime,.NET Core 也是如此,那就是為什麼有效)。

切勿用於import恢復非 PCL 或至少不支持 win8/wpa8 和 net45 的 PCL。

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 文件並查看輸出。

引用自:https://stackoverflow.com/questions/40846326