2015-06-03 140 views
1

注意:我已經對這個問題做了詳盡的研究,有很多假設的解決方案,其中沒有任何實際爲我工作。服務無法啓動。 System.IO.FileNotFoundException:無法加載文件或程序集「assemblyname.dll」

在客戶端計算機上成功安裝Windows服務之後,我注意到它並不像它應該那樣自動啓動。當我嘗試手動啓動它時,出現上述錯誤。我查看了事件查看器日誌,這裏是在那裏記錄的錯誤:「服務無法啓動System.IO.FileNotFoundException:無法加載文件或程序集」assemblyname.dll「或它的某個依賴項。找不到「

事實證明,我的.dll,即使我可以在安裝文件夾中看到它(我並排),系統無法連接到它。有人建議確保應用程序文件名和配置文件名匹配,我的服務已經完成了,並且我的服務被設置爲在本地系統帳戶上運行。注意:在開發框中一切正常,並且客戶端機器具有運行服務所必需的4.5 .NET框架。

問題:我該如何解決這個問題?我如何確保客戶機上的系統能夠看到該服務使用的.dll文件?

任何幫助在這裏讚賞。讓我知道是否需要進一步澄清。

感謝

+0

可執行文件與dll是否在同一個文件夾中?我假設是,但我想驗證。 – CDC

+0

@DavidW該服務是在64位系統上開發的,但是編譯爲32位 –

+0

@CDC,所有文件都在同一個文件夾中。 –

回答

1

可能的解決方法

嘗試在x86上編譯它,可能是一個64位的DLL,請確保您有32位版本。

+0

感謝您的帖子@NickProzee ,我仔細檢查了.dll的體系結構,corflags告訴我它實際上設置爲AnyCPU,所以這不應該成爲問題。 (還是)感謝你的建議。 –

+0

嘗試將dll放在與.exe相同的文件夾中 –

+0

調試這些文件的常用方法是Fusion Log Viewer。它會告訴你它試圖加載的內容和它看起來的位置。如果Dll字面上與服務exe文件在同一個文件夾中,那麼Dll與AssemblyVersion中的客戶端要求,強名稱等不匹配。它不太可能是體系結構,因爲負載會因BadImageFormatException而失敗,而不是「無法找到文件」。請注意,您也可能錯過了「assemblyname.dll」所依賴的程序集。 – PhilDW

1

好吧我終於解決了我的問題。我運行了依賴關係的步行者,它給了我一個缺失的dll列表,但事實證明他們與我使用的dll無關。但我決定用可再發行組件安裝Win 7的Windows SDK,這解決了我遇到的問題。在那裏你有人,希望這有助於其他人前進。乾杯!

+0

你會讓你的客戶安裝Windiows SDK嗎? – PhilDW

+0

@PhilDW我會根據需要將其構建到我的安裝程序中,我將添加邏輯來查找它,如果它不存在,我將向他們展示具有下載鏈接的啓動畫面,很像檢查正確的.Net框架。 –

相關問題