无法使用反射从用户文件夹加载程序集

问题描述 投票:0回答:1

我有适用于Android的Xamarin Forms应用程序,具有我的dll作为参考。我们称之为A.dll(.net标准2.0)。

我在用户文件夹(Environment.GetFolderPath(Environment.SpecialFolder.Personal))中有第二个dll。我们称它为[[B.dll(同样是.net标准2.0)

A.dll中的功能尝试使用反射从B.dll中加载类:

var privatePath = Environment.GetFolderPath(Environment.SpecialFolder.Personal); var asmPath = Path.Combine(privatePath, "B.dll"); if (File.Exists(asmPath)) { var asm = Assembly.LoadFrom(asmPath); foreach (var t in asm.GetTypes()) { } }

它在GetTypes()方法中引发异常:

无法加载文件或程序集'netstandard,版本= 2.0.0.0,区域性=中性,PublicKeyToken = cc7b13ffcd2ddd51'或其依赖项之一。

奇怪的是,它在调试期间(在模拟器中)在Debug版本中起作用,但是在尝试发布版本(在模拟器中)时也无效。

问题是,这样的dll加载是否可能?为什么在已经加载A.dll并且它与.net standard的相同版本时不能加载“ netstandard”程序集?为什么它在调试期间有效,但不能发布?

c# xamarin reflection .net-standard .net-standard-2.0
1个回答
0
投票
由于sisi的评论,我发现我必须将“仅SDK程序集”的“链接”选项(在* .Android项目的Android选项中)更改为“

无”。现在可以使用。

© www.soinside.com 2019 - 2024. All rights reserved.