Xamarin,Grpc,无法使用标记解析类型0100002b

问题描述:

我正在尝试使gRPC与Xamarin一起工作。Xamarin,Grpc,无法使用标记解析类型0100002b

我知道你可能会认为这是重复的问题,原因有计算器上有关该错误类似的问题,但我已经尝试了巩固所有引用和的NuGet包,试图清洁工程和重建。

我已经尝试过Xamarin.Forms,Windows 7和Windows 10上的Xamarin Android项目。它们都有相同的错误。获得一致的例外:

Channel channel = new Channel(ip, port, ChannelCredentials.Insecure); 

例外:

"Could not resolve type with token 0100002b (from typeref, class/assembly System.Runtime.Loader.AssemblyLoadContext, System.Runtime.Loader, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)" 

输出:

10-16 10:19:28.057 D/Mono(13519): Assembly Ref addref Grpc.Core[0x7f9e5ad500] -> System.Core[0x7f89b19500]: 4 
10-16 10:19:28.062 D/Mono (13519): Image addref System[0x7f89750280] -> System.dll[0x7f89a5e000]: 2 
10-16 10:19:28.062 D/Mono(13519): Prepared to set up assembly 'System' (System.dll) 
10-16 10:19:28.062 D/Mono(13519): Assembly System[0x7f89750280] added to domain RootDomain, ref_count = 1 
10-16 10:19:28.076 D/Mono(13519): AOT: image 'System.dll.so' not found: dlopen failed: library "/data/app/GarmentInventoryAndroidApp.GarmentInventoryAndroidApp-1/lib/arm64/libaot-System.dll.so" not found 
10-16 10:19:28.084 D/Mono(13519): AOT: image '/usr/local/lib/mono/aot-cache/arm64/System.dll.so' not found: dlopen failed: library "/data/app/GarmentInventoryAndroidApp.GarmentInventoryAndroidApp-1/lib/arm64/libaot-System.dll.so" not found 
10-16 10:19:28.084 D/Mono(13519): Config attempting to parse: 'System.dll.config'. 
10-16 10:19:28.084 D/Mono(13519): Config attempting to parse: '/usr/local/etc/mono/assemblies/System/System.config'. 
10-16 10:19:28.084 D/Mono(13519): Assembly Ref addref System.Core[0x7f89b19500] -> System[0x7f89750280]: 2 
10-16 10:19:28.085 D/Mono (13519): Assembly Ref addref System[0x7f89750280] -> mscorlib[0x7fb0aa3e00]: 16 
Loaded assembly: System.dll[External] 
10-16 10:19:28.134 D/Mono(13519): Assembly Loader probing location: '/storage/emulated/0/Android/data/GarmentInventoryAndroidApp.GarmentInventoryAndroidApp/files/.__override__/System.Runtime.Loader.dll'. 
10-16 10:19:28.134 D/Mono(13519): Image addref System.Runtime.Loader[0x7f89750380] -> /storage/emulated/0/Android/data/GarmentInventoryAndroidApp.GarmentInventoryAndroidApp/files/.__override__/System.Runtime.Loader.dll[0x7f8975e800]: 2 
10-16 10:19:28.135 D/Mono(13519): Prepared to set up assembly 'System.Runtime.Loader' (/storage/emulated/0/Android/data/GarmentInventoryAndroidApp.GarmentInventoryAndroidApp/files/.__override__/System.Runtime.Loader.dll) 
10-16 10:19:28.135 D/Mono(13519): Assembly System.Runtime.Loader[0x7f89750380] added to domain RootDomain, ref_count= 1 
10-16 10:19:28.138 D/Mono (13519): AOT: image '/storage/emulated/0/Android/data/GarmentInventoryAndroidApp.GarmentInventoryAndroidApp/files/.__override__/System.Runtime.Loader.dll.so' not found: dlopen failed: library "/data/app/GarmentInventoryAndroidApp.GarmentInventoryAndroidApp-1/lib/arm64/libaot-System.Runtime.Loader.dll.so" not found 
10-16 10:19:28.143 D/Mono(13519): AOT: image '/usr/local/lib/mono/aot-cache/arm64/System.Runtime.Loader.dll.so' not found: dlopen failed: library "/data/app/GarmentInventoryAndroidApp.GarmentInventoryAndroidApp-1/lib/arm64/libaot-System.Runtime.Loader.dll.so" not found 
10-16 10:19:28.143 D/Mono(13519): Assembly Loader loaded assembly from location: '/storage/emulated/0/Android/data/GarmentInventoryAndroidApp.GarmentInventoryAndroidApp/files/.__override__/System.Runtime.Loader.dll'. 
10-16 10:19:28.143 D/Mono(13519): Config attempting to parse: '/storage/emulated/0/Android/data/GarmentInventoryAndroidApp.GarmentInventoryAndroidApp/files/.__override__/System.Runtime.Loader.dll.config'. 
10-16 10:19:28.143 D/Mono(13519): Config attempting to parse: '/usr/local/etc/mono/assemblies/System.Runtime.Loader/System.Runtime.Loader.config'. 
10-16 10:19:28.143 D/Mono(13519): Assembly Ref addref Grpc.Core[0x7f9e5ad500] -> System.Runtime.Loader[0x7f89750380]: 2 
10-16 10:19:28.144 W/Mono (13519): The request to load the assembly mscorlib v4.0.0.0 was remapped to v2.0.5.0 
10-16 10:19:28.144 D/Mono(13519): Assembly Ref addref System.Runtime.Loader[0x7f89750380] -> mscorlib[0x7fb0aa3e00]: 17 
Loaded assembly: /storage/emulated/0/Android/data/GarmentInventoryAndroidApp.GarmentInventoryAndroidApp/files/.__override__/System.Runtime.Loader.dll[External] 

希望有人能帮助我。提前致谢!

+0

请注意,gRPC C#目前没有官方支持Xamarin(我们正在使用本地C库和核心RPC功能并通过P/Invoke调用它 - 我认为这可能是导致您可能会看到的问题。可以使gRPC C#为Xamarin工作,但它需要构建正在手动构建的grpc_csharp_ext.dll本地库的正确版本(可能还有一些调整)。 –

+0

@janTattermusch谢谢你的回答。 –

感谢@JanTattermusch答案:

请注意,GRPC C#目前没有官方支持 为Xamarin(我们使用的是原生的C库和核心RPC 功能,并调用它通过P/Invoke - 我认为这可能是 问题的根源,您可能会看到gRPC C#可以让 为Xamarin工作,但它需要构建正确版本的 grpc_csharp_ext.dll本地库正在手动构建(并且可能还有一些调整 )。