无法从UWP引用.NET Core库
我有一个带有以下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": {} } }
有人也可以清理
- 如何从UWP中引用.Net核心库或者
- 在我的具体案例中发生了什么?
回答
我解决了它向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日更新
好的,这是我的结果
- 创建一个新的UWP
- 升级到5.2.2,于7月14日发布
-
更新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": {} } }
-
创建一个新的dotnet核心库
- 构建库,并生成一个nuget包
- 我能够引用.dll文件或nuget包。 而且我在键入代码时会变得聪明
- UWP已成功构建和部署,但是一旦运行它,就会抛出exception
这是它停止对我有意义的地方。 根据这个,它应该适用于netstandard> = 1.6.0,而这个官方表说我需要目标netstandard <= 1.4.0,但这不会改变任何东西。 更令人困惑的是,如果我将netstandard(依赖项和目标框架)的两个版本降级到1.5,我仍然会得到完全相同的错误而不在我的任何文件中指定1.6。
通用Windows平台映射到netstandard1.4 – 既不是1.6也不是1.5。 因此,您的库(我称之为AEther
)的要求比您的UWP应用程序要高。
- 如何从UWP中引用.Net核心库或者
如您在链接的SO问题中所述,Visual Studio中尚不支持此问题 。
我只能猜测它与CLI的支持有关,这是一个悬而未决的问题 。 截至今天,预计将在Microsoft.NETCore.UniversalWindowsPlatform
元数据包的5.3版本中修复 – 尽管之前预计将在5.2.2中修复。
- 在我的具体案例中发生了什么?
NuGet告诉您,您的软件包仅支持netstandard1.6
目标框架,但不支持uap10.0
。 实际上,如果您解压缩.nupkg
您将在lib\netstandard1.6
下找到您的DLL。
由于dotnet pack会自动从project.json
创建.nuspec
,因此您需要使用适当的框架(例如netstandard1.4
)进行修复。 编译不同的框架可能更容易,例如与.NET Platform Standard兼容的Portable配置文件 。