2011-07-21 210 views
0

我有一個正常的winforms應用程序。我運行它,並在另一個.dll(解決方案的另一個項目部分)中調用某些邏輯。我得到一個錯誤(我自己的除外)說,無法加載組件等等等等無法加載程序集

我用匯編日誌查看器,但無法找到一個問題 - 我所發現的是,Windows服務程序使用安裝/部署在另一個帳戶上。我的winforms應用程序調用這個服務,它反過來調用它自己和不同的.dll中的邏輯。

這可能是一個問題? 感謝

回答

0

檢查項目.NET框架版本,您的裝配.NET框架版本,問題可能出現。

問候。

0

確保它在尋找組件處於你是從運行應用程序的同一目錄下,或者它的註冊在GAC(全局程序集緩存) - 這是正確的版本。

0

確保您的應用程序及其所有依賴項都是32位或全部64位程序集。

+0

我該怎麼做?這個問題是間歇性的btw。 – blade33

+0

@ blade33:位不是間歇的,所以這可能不是你的情況的問題。在.DLL或.EXE上運行'dumpbin/headers'和'dumpbin/clrheader'來找出平臺。 –

+0

您也可以檢查Visual Studios中的配置管理器,如果它錯誤(然後重新編譯),那麼您將在其中修復它。 – JGWeissman

1

如果您使用FileDialog並打開/保存/將文件寫入另一個目錄,而不是包含您的exe/dll的目錄,它將更改程序工作目錄(如果未設置FileDialog.RestoreDirectory = true)。這一個讓我適應了一段時間,並會解釋爲什麼它會出現間歇性。

+0

這是「間歇性」故障的最可能原因。當然,在工作目錄中查找DLL是一個好主意。 –

+0

如何設置該值? – blade33

+0

RestoreDirectory是FileDialogs的一個屬性。例如,如果您使用的是名爲ofd的OpenFileDialog,則只需set ofd.RestoreDirectory = true即可。這也將適用於SaveFileDialog。 – alexD