2012-10-11 73 views
4

我看過這個問題,我發現網上有很多關於它的條目..但沒有,我能理解。也許你可以幫忙? 我有一個dll文件(從C腳本創建),我創建了一個使用Visual C#2010的GUI爲我的程序。 我已經在5臺不同的計算機上測試了我的應用程序。 在我的計算機和我創建應用程序的計算機上,用戶界面和程序運行沒有任何問題。但是,當我將它傳遞給其他計算機時,我收到以下錯誤行後程序執行(這意味着用戶界面打開,但是當我插入所有的值,並運行存儲在dll文件中的代碼我收到errir) 「無法加載文件或程序集」ParsingDll.dll「或其某個依賴項,找不到指定的模塊。」Visual C#「無法加載文件或程序集或其依賴項之一」

所有電腦都運行microsoft windows 7並且都是64位的。 dll文件「ParsingDll.dll」是包含我的代碼由GUI執行的一個,它與可執行文件位於同一個文件夾中。

我很感激,如果有人可以幫助我這個,並採取一步一步與我一樣,即時通訊新的這些東西。

非常感謝大家。

+0

不要忘記包含您用來創建C dll項目的dll。 –

+0

整個錯誤信息很重要:「無法加載文件或程序集」ParsingDll.dll「**或其某個依賴**」。「 (強調增加)。聽起來像它可以找到ParsingDll.dll就好,但不是它所要求的。 – Bevan

+0

如果你不知道你的本地DLL有什麼依賴關係,那麼SysInternals的ProcMon工具可以告訴你。你會看到你的進程尋找DLL,但沒有找到它。它的可能性很高,它是一個名爲msvcrxxx.dll的文件,其中xxx是一個數字。你可以通過C項目中的/ MT編譯選項來避免這種依賴性。 –

回答

6

其中一個使用的程序集可能需要一個不可用的(本地)程序庫。

您可以啓用融合日誌記錄,以找出究竟是什麼原因造成的麻煩:

這將記錄什麼被加載,並其中融合裝載機查找組件,在註冊表中打開融合日誌:

添加下列值

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion 

地址:

DWORD ForceLog set value to 1 
DWORD LogFailures set value to 1 
DWORD LogResourceBinds set value to 1 
String LogPath set value to folder for logs e.g. C:\FusionLog\ 

此文件夾必須存在,並用反斜槓結束

(奉How to enable assembly bind failure logging (Fusion) in .NET複製)

+0

Fusion沒有跟蹤本機DLL的依賴關係。 –

+0

@HansPassant基於你的名字我願意懷疑自己。但我很喜歡_pretty_我確信我已經看到過不止一次。我得到了一個很好地在'Native'/'Managed'IIRC中拆分的日誌目錄結構 – sehe

+1

您看到「本地映像」正在加載。由ngen.exe通過預裝配組件生成,名稱以「.ni.dll」 –

0

進口的dll,並編譯所有包括dll項目。刷新,重新啓動,必要時重新啓動計算機。確保計算機上存在DLL。重新啓動,刷新,重新編譯,清理應該修復它。

+0

這會給予什麼幫助?如果程序在一臺機器上執行(已編譯) - 重新編譯不會解決問題。這聽起來像標準的IT支持人員告訴用戶重新啓動他們的機器3次,看看它是否工作.....正如其他用戶所說 - 沒有工作的機器有環境問題(缺少DLL,AV阻止,等等)。 – tsells

0

檢查您的ParsingDll.dll是否被阻止。你可以通過查看dll文件的屬性進行檢查。如果它被阻止,將會有一個「解鎖」按鈕。

+0

我試過了,它沒有工作 – badmanjoe

相關問題