我正在尝试让gRPC与Xamarin一起使用。
我知道您可能认为这是重复的问题,导致关于该错误的stackoverflow上存在类似的问题,但是我尝试合并所有引用和nuget包,尝试清理项目并重建。
我已经尝试过Windows 7和Windows 10上的Xamarin.Forms,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]
希望有人能帮助我。提前致谢!
最佳答案
感谢@JanTattermusch回答:
请注意,gRPC C#当前没有官方支持
Xamarin(我们正在使用本机C库和核心RPC
功能并通过P / Invoke调用它-我认为可能是
您可能会看到的问题的根本原因。可以制作gRPC C#
为Xamarin工作,但需要构建正确的
手动构建grpc_csharp_ext.dll本机库(可能是
还有一些调整)。