這次項目需要,做了一個C#寫的WebService服務給外部調用,服務內部引用了算法庫,本地調試已經通過,現場部署服務時各種提示找不到DLL文件。
第一、如果是包含有32位庫在64位服務器系統上運行,會有一個運行時錯誤,64位的IIS默認“應用程序池”不啟用32位支持,需要去“高級設置”里啟用32位支持
第二、找不到Dll處理方法:
網上查到的Dllimport路徑相關:
DllImport會按照順序自動去尋找的地方:
1、exe所在目錄
2、System32目錄
3、環境變量目錄
三種都試過沒用,依然提示找不到DLL,無法加載,用depends軟件查了該庫文件,依賴項都有,百思不得其解。
最后逼的沒辦法,把depends發給現場讓他們看那個算法DLL的依賴項,最后發現是現場服務器中缺少msvcr100.dll跟msvcp100.dll,本地開發環境有這些。希望跟我遇到一樣問題的人能夠早點發現。
如果調試環境沒有問題,必然是實際應用與調試環境有區別,服務運行不了不一定是代碼相關。