0

我正在努力让我的 ASP.Net 项目在 Linux 上运行。我一直在 Windows 上使用 XSP 测试我的代码,但现在我正在努力确保我也可以在 Linux 上进行开发和测试。为此,我运行了 Ubuntu,并运行了 MonoDevelop 和 MySQL。我已经下载了最新的 MySQL Connector/Net,并且我认为我已经正确安装了它。

没有包会自动安装 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,版本=6.2.3.0,文化=中性,PublicKeyToken=C5687FC88969C44D”或其依赖项之一。该系统找不到指定的文件。

令人沮丧的是,最初的错误是它无法加载 MySql。数据.dll,现在的错误信息是它无法加载MySql。网络.dll。这意味着我以某种方式解决了 Data dll 的问题,现在我遇到了 Web dll 的问题。我已经完成并重新完成了我学会了解决 Data dll 的问题,但我无法让 Web dll 正常工作。

不幸的是,我对 Linux 和 Mono(但不是 ASP.Net)仍然很陌生,而且我已经没有什么可以尝试的了。同样,除了上面描述的让我寻求帮助之外,我在谷歌上没有找到任何可以尝试的东西。

谁能帮我找出为什么 XSP 找不到程序集以及我能做些什么?

谢谢,-威尔

4

2 回答 2

1

您可以尝试设置一些环境变量,这些变量应该会告诉您所有 Mono 在哪里寻找程序集:

MONO_LOG_LEVEL="调试" MONO_LOG_MASK="dll" xsp2

于 2010-05-21T14:35:57.940 回答
0

不是一个完美的修复(我不知道为什么会出错),但如果你赶时间,请将 MySql.Web.dll 复制到应用程序的 bin 目录中。

于 2010-05-21T12:45:23.353 回答