2013-01-02 31 views
0

在Windows 7上使用SQLite 4.0開發MonoDevelop 3.0.5和Mono 2.10.9。使用C#和Mono爲我的活動運行時設置。目標框架是Mono/.NET 4.0。調用SQLite在C#/ MonoDevelop中工作,但在程序從命令行運行時崩潰

我的模式腳本加載到SQLite的罰款,我可以從命令行sqlite3.exe/sqlite3.dll訪問它沒有問題。我可以連接到數據庫並執行select/update/insert並從我的C#代碼中調用諸如count和last_insert_row_id之類的函數,當我在MonoDevelop IDE中執行代碼時(運行和調試工作都正常)。

當我嘗試從命令行執行代碼並調用myprogram.exe時,程序在第一次數據庫調用時崩潰。來自例外的重要數據似乎爲:

System.IO.FileNotFoundException:無法加載文件或程序集「Mono.Data.Sqlite,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 0738eb9f132ed756」或其中一個依賴。該系統找不到指定的文件。 文件名: 'Mono.Data.Sqlite,版本= 4.0.0.0,文化=中性公鑰= 0738eb9f132ed756'

數據庫和sqlite3.dll在同一個目錄中myprogram.exe。這似乎是一個系統配置問題,這不是我的專長。希望對於有人在我的開發機器上配置失敗很明顯。

+1

*你究竟是從命令行執行程序的? – cdhowie

+0

C:\ \ myprogram \ bin \ Debug \ myprogram.exe

+0

在調用它之前,嘗試'cd'ing到'C:\ \ myprogram \ bin \ Debug'。工作目錄可能很重要。 – cdhowie

回答

0

如果您正在運行Windows 7 x64,請注意位數。

在MonoDevelop(32位)中運行時,應用程序(編譯爲任何CPU)將作爲32位進程啓動。所以,當你說它運行良好,這意味着在32位模式下運行良好。

在命令提示符下(cmd.exe,默認爲64位),您的應用程序將自動運行在64位模式下。如果在這種情況下失敗,這意味着你將不得不使用64位SQLite東西(包括64位sqlite3.dll和64位ADO.NET提供程序集)。這應該在SQLite網站或ADO.NET提供程序組裝文檔的其他地方清楚地說明。

相關問題