“System.IO.FileNotFoundException:“Could not load file or assembly 'ClassLibrary2, Culture=neutral, PublicKeyToken=null'. 系統找不到指定的文件。””
在 .net 程序開發中我們會經常用到反射,最近在開始慢慢接觸 .netCore。Core 反射的語法也是一樣的,所以寫下來也沒有什么問題,但是一運行,就彈出了開頭的 異常。
項目結構如下
ClassLibrary3 是一個接口
namespace ClassLibrary3 { public interface IClass1 { void Print(); } }
ClassLibrary2 是 ClassLibrary3 的實現
namespace ClassLibrary2 { public class Class1:IClass1 { public void Print() { Console.WriteLine("Print....."); } } }
主程序通過反射獲取到到類型並創建對象
class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); Assembly assembly = Assembly.Load(new AssemblyName("ClassLibrary2")); Type type = assembly.GetType("ClassLibrary2.Class1"); var instance = (IClass1)Activator.CreateInstance(type); instance.Print(); Console.ReadLine(); } }
這代碼都這里沒有問題,但是執行的時候卻拋出了 開篇的異常。仔細檢查了下,ClassLibrary2 生成的 dll 確認已經是復制到了主程序目錄下。
剛開始接觸Core 也沒有系統去熟悉,最后經過多方努力后,發現在主程序項目下有個 deps.json 的文件
文件內容是這樣的(里面沒有 ClassLibrary2 因為我們沒有在項目中引用 ClassLibrary2)
然后想着 那異常提示找不到路徑,那我們在這里配置下不久可以了?
然后改成如下:
這時候我們運行程序:
完美!