2010-05-21 77 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