簡體   English   中英

無法從UWP引用.NET Core庫

[英]Cannot reference .NET Core library from UWP

我有一個帶有以下project.json的.NET Core庫

{
  "version": "1.0.0-*",
  "dependencies": {
    "NETStandard.Library": "1.6.0"
  },
  "frameworks": {
    "netstandard1.6": { }
  },
  "scripts": {
    "postcompile": [
      "dotnet pack --no-build --configuration Release",
      "xcopy bin\\Release ..\\..\\lib\\ /Y"
    ]
  }
}

其中后編譯腳本創建了一個nuget包 ,我按照這些說明在VS中添加了自定義Feed。 這是因為我想從Windows通用應用程序中引用它 ,根據這個問題 ,它不能(否)。 但是當我嘗試它時,我得到這樣的信息:

Package AEther 1.0.0 is not compatible with uap10.0 (UAP,Version=v10.0).
Package AEther 1.0.0 supports: netstandard1.6 (.NETStandard,Version=v1.6)
One or more packages are incompatible with UAP,Version=v10.0.

這是我不再理解的地方。 根據這個 ,它應該適用於netstandard> = 1.6.0,而這個官方表說我需要目標netstandard <= 1.4.0,但這不會改變任何東西。 更令人困惑的是,如果我將netstandard(依賴項和目標框架)的兩個版本降級到1.5,我仍然會得到完全相同的錯誤而不在我的任何文件中指定1.6。

更新 UWP project.json看起來像這樣

{
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.1"
  },
  "frameworks": {
    "uap10.0": {}
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

有人可以清理

  1. 如何從UWP中引用.Net核心庫或者
  2. 在我的具體案例中發生了什么?

回答

我解決了它向UWP應用程序添加導入,如下所示:

{
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.1"
  },
  "frameworks": {
    "uap10.0": { import [ "netstandard1.6" ] }
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

您需要將Microsoft.NETCore.UniversalWindowsPlatform升級到5.2.1


7月15日更新

好的,這是我的結果

  1. 創建一個新的UWP
  2. 升級到5.2.2,於7月14日發布
  3. 更新project.json,導入“netstandard1.6”

    { "dependencies": { "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2", "Test": "1.0.0" }, "frameworks": { "uap10.0": { "imports": [ "netstandard1.6" ] } }, "runtimes": { "win10-arm": {}, "win10-arm-aot": {}, "win10-x86": {}, "win10-x86-aot": {}, "win10-x64": {}, "win10-x64-aot": {} } }

  4. 創建一個新的dotnet核心庫

  5. 構建庫,並生成一個nuget包
  6. 我能夠引用.dll文件或nuget包。 得到智能,同時輸入代碼
  7. UWP已成功構建和部署,但一旦運行它,就會拋出異常 在此輸入圖像描述

這是我不再理解的地方。 根據這個,它應該適用於netstandard> = 1.6.0,而這個官方表說我需要目標netstandard <= 1.4.0,但這不會改變任何東西。 更令人困惑的是,如果我將netstandard(依賴項和目標框架)的兩個版本降級到1.5,我仍然會得到完全相同的錯誤而不在我的任何文件中指定1.6。

通用Windows平台映射到netstandard1.4 - 既不是1.6也不是1.5。 因此,您的庫(我稱之為AEther )的要求比您的UWP應用程序要高。

  1. 如何從UWP中引用.Net核心庫或者

您在鏈接的SO問題中所述,Visual Studio中尚不支持此問題

我只能猜測它與CLI的支持有關,這是一個懸而未決的問題 截至今天,預計將在Microsoft.NETCore.UniversalWindowsPlatform元數據包的5.3版本中修復 - 盡管之前預計將在5.2.2中修復。

  1. 在我的具體案例中發生了什么?

NuGet告訴您,您的軟件包僅支持netstandard1.6 目標框架,但不支持uap10.0 實際上,如果您解壓縮.nupkg您將在lib\\netstandard1.6下找到您的DLL。

由於dotnet pack會自動從project.json創建.nuspec ,因此您需要使用適當的框架(例如netstandard1.4 )進行修復。 編譯不同的框架可能更容易,例如與.NET Platform Standard兼容的Portable配置文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM