加載類型所以我搜索了很多關於同一問題的線程,但我似乎無法工作。但我知道確切的問題。添加委託之後無法從程序集C#
所以這是一個
SellControl.DLL
,我添加了一個委託和事件,你可以在這裏看到。
public delegate void CashCreditStatusDel(string cardNo, decimal amount, string extraText, string token, string docNr, bool status);
public static event CashCreditStatusDel SwitchOperationStatus;
現在我需要另一個類內的事件,以便引用SellControl.dll並運行它。 Eeverything在我的電腦正常工作,無暇雖然當我把它的測試機上,我們的測試人員使用 - 它刪除一個錯誤
[8點42分46秒]致命錯誤(內核):內部異常:System.TypeLoadException: 無法從程序集 'SellControl,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'加載類型'SellControls.CashCreditStatusDel'。 在Plugins.CardCreditOperation.Display()
所以我跟蹤一個錯誤顯示()方法
SellControl.SwitchOperationStatus += InvokeData;
我訂閱我的方法InvokeData到方法的SellControl裏面,如果我刪除此行 - 代碼不會崩潰,但我不會訂閱活動。
正如我在測試機器中可以理解的那樣,GAC有舊版本的SellControl.dll並使用它而不是我的?我現在掙扎了2個小時。
由於該程序集並非強名稱,因此它不能在GAC中。你確定程序集是應用程序可以加載它的地方嗎?它是什麼應用程序,桌面,網絡?你有沒有嘗試啓用融合?你有一個項目引用程序集,或者你是否手動複製DLL?如果是後者,請確保程序集是最新的,並且位於應用程序可執行文件的旁邊。 – Luaan
您是否重新編譯測試機器上的代碼?在構建和測試機器上,網絡庫的版本必須完全相同,才能簡單複製可執行文件。網絡庫使用Windows DLL和Windows DLL的版本可能不同。解決方法是使用生成菜單中的發佈選項來生成安裝包,如商業購買的軟件。發佈將在根文件夾中使用setup.exe創建文件夾。您需要安裝setup.exe,就像商業軟件一樣,它將在測試機器上更新dll,或者在測試機器上重新編譯軟件。 – jdweng
這是一個3.5 .NET的WPF應用程序。我在我自己的機器上編譯所有東西,然後使用過去的程序員創建的.bat將所有內容從發佈文件夾移動到「代碼結構化文件夾」中。一切都很好,直到現在。 – Wkjjjj