簡體   English   中英

無法加載DLL'SQLite.Interop.dll':找不到指定的模塊。 Windows Server 2012上的錯誤

[英]Unable to load DLL 'SQLite.Interop.dll': The specified module could not be found. Error on Windows Server 2012

我有一個多項目解決方案(C#),我正嘗試將其部署到我們的測試服務器之一。 所有項目均針對x64構建,並在適用的情況下禁用了“首選32位”。

一些項目引用使用SQLite加密擴展(不由nuget管理)的SQLite dll集。 當我在本地開發機器上構建和安裝解決方案時,應用程序和Windows服務能夠正常運行,沒有問題。

當我嘗試在運行64位Windows Server 2012的一台測試服務器上安裝同一軟件包時,出現“無法加載DLL'SQLite.Interop.dll':找不到指定的模塊”。 每當我嘗試與SQLite數據庫通信時。 安裝后,我已三重檢查所有合適的DLL是否都位於程序文件夾中。

在我的VS解決方案中,我嘗試創建x86 / x64文件夾,將“復制”設置為“始終”,但無濟於事。 我還已經將DLL從我的本地安裝文件夾復制到服務器文件夾中,只是為了查看過程中是否出現混亂。

可能是權限問題? 我是高級用戶,但不是服務器上的完全管理員,而我是計算機上的完全管理員。 我嘗試手動修改程序文件夾上的權限,以查看是否存在問題,但也沒有運氣。

綜上所述,該項目是為x64顯式構建的,在正確的文件夾中具有正確的DLL,並且可以在本地安裝。 我不知道為什么它不能在服務器上安裝。 我在StackOverflow,MSDN和SQLite網站上瀏覽了無數線程,通常都建議使用x86 / x64文件夾,但這對我沒有用。 我希望有人可以在這里幫助我。

謝謝!

經過更多的調試,實際上可以弄清楚。 服務器上安裝的Visual C ++運行時不是正確的版本。 我將合並模塊添加到安裝程序中,以獲得我的項目期望的版本,然后將應用程序重新安裝在服務器上,現在可以正常工作了。

對於那些有此問題的人,請在C:\\ Program Files(x86)\\ Common Files \\ Merge Modules中尋找正確版本的VC ++運行時。 如果您不知道所需的版本,請在引發錯誤的計算機上使用諸如依賴項遍歷的工具。 我的告訴我,我缺少VC140 ,所以這是我復制到項目中並添加到安裝程序中的模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM