关于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,解决了,多谢熬夜后如头像的帮助。我也记录此问题来帮助以后遇到这个问题的朋友。
-------------------------------------------------
保持专注,只做一件事,做好这件事!@
-------------------------------------------------