Xamarin平台项目无法解决NuGet依赖项

问题描述

我正在努力理解为什么有时由于Xamarin平台应用程序无法从其共享的(.NET Standard)项目中解决NuGet间接依赖关系而陷入这种情况的原因。

这种情况:

我扩展了已经构建和部署的跨平台(iOS,Android和UWP)NuGet程序包。新功能要求共享(.NET Standard)代码库项目对System.IdentityModel.Tokens.Jwt有新的依赖性。 System.IdentityModel.Tokens.Jwt依次具有Microsoft.IdentityModel.TokensMicrosoft.IdentityModel.JsonWebTokens的依赖关系。

我建立了代码库; .NET Standard 2.0(共享)代码库和iOS,Androind和UWP的三个平台库。一切都很好,所以我更新了.nuspec并将System.IdentityModel.Tokens.Jwt添加<group targetFramework=".NETStandard2.0">的{​​{1}}子节中,然后打包.nuget。

接下来,为确保一切正常,我将.nuget“部署”到本地文件夹(已将其设置为用于测试目的的nuget源),然后为我的四个测试应用程序项目(.Net标准,iOS,Android和UWP)。共享的.Net Std lib项目构建良好,因此我尝试构建平台之一,例如Android应用程序。我现在收到此错误

<dependencies>

我检查了Android应用程序项目的Can not resolve reference: `Microsoft.IdentityModel.Tokens`,referenced by `(my package)` 文件,这是nuget输出

project.assets.json

问题是,(我的包裹)对 "(my package name)": { "type": "package","dependencies": { "Xamarin.Forms": "4.0.0" },"compile": { "lib/MonoAndroid10/(my package name).Android.dll": {},"lib/MonoAndroid10/(my package name).dll": {} },"runtime": { "lib/MonoAndroid10/(my package name).Android.dll": {},"lib/MonoAndroid10/(my package name).dll": {} } },以外的其他包裹也有依赖性,例如System.IdentityModel.Tokens.JwtXamarin.Essentials。反过来,它们又依赖于其他NuGets,依此类推。由于某种原因,这似乎根本不是问题。根据我的读物(https://docs.microsoft.com/en-us/nuget/concepts/dependency-resolution),Visual Studio会找出所有依赖关系,并构建一个依赖关系图,然后将其展平并写入每个项目的System.Text.Json。为什么某些(大多数,显然是)软件包可以完全解决而另一些却不能?

我通过简单地将所有麻烦的引用直接添加到.nuspec文件的每个平台目标部分来“解决”了问题,但我不知道为什么甚至有必要这样做。

有人吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...