背景
首先,我確實在其他地方尋找解決辦法,發現this solution,但這並不能解決我的問題。如何讓我的程序從另一個文件夾引用程序集?
我在Visual Studio的主項目中引用了一個程序集,但我需要從我的項目外部加載它,而不是在子文件夾中加載它。我可以調用加載程序集...
System.Reflection.Assembly.LoadFrom(myExternalAssemblyPath);
...但該程序將無法運行,並給了我以下錯誤:
FileNotFoundException was unhandled
Could not load file or assembly 'MyAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
我之前向大會沒有呼叫調用來加載它,但程序仍然期望,甚至在它甚至在明顯進入Main
函數之前,該DLL就在該程序的文件夾中。
Quesiton:
如何讓我的程序,在Visual Studio中仍引用此,但實際上運行該程序時,從不同的位置加載它?是否有指示我需要指定某處告訴程序等待加載它?有其他解決方案嗎?
注:我不想將文件夾和DLL添加到PATH變量。這不是一個可行的解決方案。
如果期望它在Main方法之前,那麼:不要在Main方法中使用該程序集(JIT在方法啓動之前發生) - 但是,您所描述的將與常規裝配探測規則對抗 - 是否真的值得? –
@MarcGravell:是的,我需要這樣做,因爲我們最終會在其他類似的程序中引用這個相同的庫。 –
讓我問一下這個問題:「是嗎?」您可以允許多個文件副本 - 它使部署變得更容易。或者,考慮GAC。 .net設計期望在本地(每個應用程序複製)庫或GAC中的中央共享庫。 –