2010-05-21 73 views
0

我正在努力讓我的ASP.Net項目在Linux上工作。我一直在Windows上使用XSP測試我的代碼,但現在我正在努力確保我可以在Linux上開發和測試。爲此,我已經運行了Ubuntu,並且運行了MonoDevelop和MySQL。我已經下載了最新的MySQL Connector/Net,我想我已經正確安裝了。Mono的XSP網絡服務器在Linux上找不到MySql.Web.dll

沒有可以自動安裝MySQL Connector/Net進行分發的軟件包,所以我從MySQL網站下載了6.2.3 zip文件。現在我已經發現了區分大小寫的問題,因爲zip文件包含小寫的文件名,Mono預計它們是大寫的。所以我將這些文件的名稱分別更改爲MySql.Data.dll和MySql.Web.dll。我也使用gacutil將這兩個文件安裝到GAC。同樣,我已將文件添加到Mono Lib目錄。下面的文件都在我的機器上存在:

/usr/lib/mono/gac/MySql.Data/6.2.3.0__c5687fc88969c44d/MySql.Data.dll 
/usr/lib/mono/gac/MySql.Web/6.2.3.0__c5687fc88969c44d/MySql.Web.dll 
/usr/lib/mono/2.0/MySql.Data.dll 
/usr/lib/mono/2.0/MySql.Web.dll 

我還創建了包文件,這樣我可以添加到MonoDevelop中的程序集的引用。文件夾/usr/lib/mono/2.0包含兩個我添加的.pc文件。

MySql.Web.pc:

Name: MySql.Web 
Description: ASP Membership, Role and Profile providers powered by MySQL 
Version: 6.2.3 
Libs: -r:/usr/lib/mono/gac/MySql.Web/6.2.3.0__c5687fc88969c44d/MySql.Web.dll 

MySql.Data.pc:

Name: MySql.Data 
Description: Provides connectivity to MySQL databases 
Version: 6.2.3 
Libs: -r:/usr/lib/mono/gac/MySql.Data/6.2.3.0__c5687fc88969c44d/MySql.Data.dll 

在這一點上,我可以在裏面MonoDevelop的項目中使用的組件。編輯項目引用時,程序集出現在可用程序集列表中。該項目現在在MonoDevelop中編譯沒有錯誤。但是,當我在XSP中運行編譯的Web項目時,瀏覽器中顯示以下錯誤:

System.IO.FileNotFoundException:無法加載文件或程序集'MySql.Web.dll,Version = 6.2.3.0,Culture =中立,PublicKeyToken = C5687FC88969C44D'或它的一個依賴關係。該系統找不到指定的文件。

什麼是最初的錯誤是它無法加載MySql。 數據 .dll現在錯誤消息是它無法加載MySql。 Web .dll。這意味着我以某種方式解決了Data dll所遇到的問題,現在我遇到了Web dll的問題。我已經走了,重新做了我學會了解決Data dll的問題,但是我無法獲得Web dll的工作。

不幸的是,我對Linux和Mono(但不是ASP.Net)還很陌生,而且我已經耗盡了一些東西來嘗試。同樣,我在Google上沒有發現任何其他內容,除了上面所述的內容外,我還需要尋求幫助。

任何人都可以幫我找出爲什麼XSP找不到組件,以及我能做些什麼?

感謝, - 將會

回答

1

您可以嘗試設置一些環境變量,應該告訴你,所有單是尋找組件:

MONO_LOG_LEVEL =「調試」 MONO_LOG_MASK =「DLL」 xsp2

+0

我確實得到了一些可能相關的輸出。在此處查看(docs.google.com/View?id=dvwt9nw_45f5t7crdx)。有趣的是,它顯示了正在加載的MySql.Data.dll(它是我的Web.config文件中的第一個)。然後它嘗試加載MySql.Web.dll,但隨後加載libc.so.6時出錯。我的解釋是我錯過了那個圖書館,但我可能是錯的。任何想法接下來要做什麼? – 2010-05-21 19:32:03

+0

您可能想檢查MySql網站並查看MySql.Data是否與Mono兼容。 – jpobst 2010-05-22 08:32:10

+0

我不認爲這是一個兼容性問題。我注意到在日誌中,您幫助我生成了一次,它嘗試在/usr/lib/MySql.Web.dll中查找dll。我把文件放在那裏,網站現在運行。不過,我相信這是一個錯誤的症狀。當我有兩個應用程序依賴於不同版本的dll時會發生什麼。我不能在/ usr/lib中擁有兩個相同的dll版本。我不知道爲什麼它不能使用其他3個副本中的一個(一個在項目倉中,一個在GAC中,另一個在/usr/lib/mono/2.0中) – 2010-05-22 08:55:35

0

不是一個完美的修復(我不知道爲什麼它去錯了),但是如果你在忙亂之中,複製MySql.Web.dll到的bin目錄你應用程序。

+0

我有什麼是ASP。 Net Web Project將所有內容編譯成ProjectName。在bin文件夾中的dll文件。我在該文件夾中有MySql dll文件,但瀏覽器中顯示的輸出沒有變化。 – 2010-05-21 13:19:34