簡體   English   中英

無法使用反射從用戶文件夾加載程序集

[英]Could not load assembly from user folder using reflection

我有適用於 Android 的 Xamarin Forms 應用程序,以我的 dll 作為參考。 我們稱之為A.dll (.net 標准 2.0)。

我在用戶文件夾中有第二個 dll( Environment.GetFolderPath(Environment.SpecialFolder.Personal) )。 我們稱之為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,Version=2.0.0.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”或其依賴項之一。

奇怪的是,它在調試期間(在模擬器中)在 Debug 構建中工作,但在嘗試發布構建時(在模擬器中也是如此)。

問題是,這樣的dll加載是否可能? 當 A.dll 已經加載並且它是 .net 標准的相同版本時,為什么它不能加載“netstandard”程序集? 為什么它在調試期間有效,但在發布時無效?

感謝 sisi 的評論,我發現我必須將鏈接選項(在 *.Android 項目的 Android 選項中)從“僅 SDK 程序集”更改為“”。 現在它起作用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM