我在ASP.NET項目中安裝了ELMAH 1.1 .Net 3.5 x64,現(xiàn)在遇到此錯誤(無論何時嘗試查看任何頁面):無法加載文件或程序集'System.Data.SQLite,版本= 1.0.61.0,區(qū)域性=中性,PublicKeyToken = db937bc2d44ff139'或其依賴項之一。試圖加載格式錯誤的程序。說明:執(zhí)行當前Web請求期間發(fā)生未處理的異常。請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。異常詳細信息:System.BadImageFormatException:無法加載文件或程序集'System.Data.SQLite,版本= 1.0.61.0,Culture =中性,PublicKeyToken = db937bc2d44ff139'或其依賴項之一。試圖加載格式錯誤的程序。底部有更多錯誤詳細信息。我的Active Solution平臺是“任何CPU”,并且我正在x64處理器上當然在x64 Windows 7上運行。之所以使用此版本的ELMAH,是因為1.0 .Net 3.5(x86,這是為其編譯的唯一平臺)在x64 Windows服務器上給了我們同樣的錯誤。我嘗試為x86和x64進行編譯,但遇到相同的錯誤。我試著刪除所有編譯器輸出(bin和obj)。最終,我直接引用了SQLite dll,該項目在服務器上運行時不需要它,并且出現(xiàn)了此編譯器錯誤:錯誤1錯誤警告:程序集生成-引用的程序集'System.Data.SQLite.dll'針對其他處理器MyProject任何想法可能是什么問題?更多錯誤詳細信息:源錯誤:當前Web請求的執(zhí)行期間生成了未處理的異常??梢允褂孟旅娴漠惓6褩8檨順俗R有關異常的來源和位置的信息。堆棧跟蹤:[BadImageFormatException:無法加載文件或程序集'System.Data.SQLite,版本= 1.0.61.0,文化=中性,PublicKeyToken = db937bc2d44ff139'或其依賴項之一。試圖加載格式錯誤的程序。] System.Reflection.Assembly._nLoad(AssemblyName文件名,字符串codeBase,證據(jù)AssemblySecurity,程序集locationHint,StackCrawlMark&stackMark,布爾throwOnFileNotFound,布爾值用于自省)+0 System.Reflection.Assembly .nLoad(AssemblyName文件名,字符串codeBase,證據(jù)assemblySecurity,程序集locationHint,StackCrawlMark&stackMark,布爾throwOnFileNotFound,布爾forIntrospection)+43System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,證據(jù)assemblySecurity,StackCrawlMark&stackMark,布爾值用于自?。?127 System.Reflection.Assembly.InternalLoad(字符串assemblyString,證據(jù)AssemblySecurity,StackCrawlMark&stackMark,Boolean forIntrospection)+142 System.Reflection.Assembly Load(字符串assemblyString)+28 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串assemblyName,布爾型starDirective)+46
4 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
System.Data.SQLite.dll
是混合程序集,即它既包含托管代碼又包含本機代碼。因此,特定的System.Data.SQLite.dll
是x86或x64,但兩者都不是。
更新(由J. Pablo Fernandez提供): Cassini,當您按下F5或單擊綠色的“播放”按鈕時,Visual Studio使用的開發(fā)Web服務器僅是x86,這意味著即使您的工作站是x64,您也只能能夠使用System.Data.SQLite.dll的x86版本。
另一種選擇是不使用Cassini,而是使用IIS7,它是正確的x64。

飲歌長嘯
TA貢獻1951條經驗 獲得超3個贊
轉到IIS7 Application Pool -> advanced settings and set the 32-bit application to true
。

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
如果您不使用SQLite,這非常簡單:
您可以從解決方案的bin文件夾中刪除SQLite DLL,然后從引用ELMAH的文件夾中刪除。重建,并且您的應用程序將不會嘗試加載您未使用的DLL。
- 4 回答
- 0 關注
- 2991 瀏覽
添加回答
舉報
0/150
提交
取消