关于Linux和Windows下部署mysql.data.dll的注册问题

mysql ado.net connector下载地址:

http://dev.mysql.com/downloads/connector/net/

选择版本:

Generally Available Releases(1)是发布版(bug什么的较少的版本吧),而Development Releases(2)是开发版

我们采用1版本

Windows (x86, 32-bit), MSI Installer

该版本是window下的安装版,如果你安装了这个版本的话,在本机调试的时候可以不用再次注册MySql.Data.MySqlClient,vs会找到dbprovider为此的dll,

如果重复注册会报错

创建 system.data 的配置节处理程序时出错: 列“InvariantName”被约束为是唯一的。值“MySql.Data.MySqlClient”已存在。

如下图 

.Net & Mono (Architecture Independent), ZIP Archive

如果是这个版本的话,那么你需要手动注册下dll,否则调试的时候或者部署到Linux服务器上的时候MySql.Data.dll是无法被加载的,所以要手工注册下代码如下

    <system.data>
        <DbProviderFactories>
            <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient"
                description=".Net Framework Data Provider for MySQL"
                type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,Version=6.9.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
            </DbProviderFactories>
    </system.data>

对于

type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,Version=6.9.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"

这段根据自己的版本改变:C:\Windows\Assembly

注意了:这样就会在windows下调试的时候报重复注册的错了。

我纠结了:在群友熬夜后如头像的帮助下解决了

在注册前先移除,上面web.config的配置改变为

    <system.data>
        <DbProviderFactories>
            <remove invariant="MySql.Data.MySqlClient"></remove>//先移除,接下来注册
            <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient"
                description=".Net Framework Data Provider for MySQL"
                type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,Version=6.9.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
            </DbProviderFactories>
    </system.data>

ok,解决了,多谢熬夜后如头像的帮助。我也记录此问题来帮助以后遇到这个问题的朋友。

posted @ 2014-05-16 12:03 逆水寒龙 阅读(...) 评论(...) 编辑 收藏