您的位置:首页 > 其它

.net WinForm程序中调用Visual Studio IDE 中数据连接配置界面 (一个DLL搞定)

2012-12-24 16:03 441 查看
玩过直接调 数据库配置界面的一定对如下三个东西不陌生

Microsoft.Data.ConnectionUI.Dialog.dll -- 微软自带的数据连接配置界面库

Microsoft.Data.ConnectionUI.dll --微软自带的数据连接配置界面库

Microsoft.Data.ConnectionUI.Dialog.resources.dll 微软自带的数据连接配置界面库语言包

现在的问题是,这三个东西原生态的使用会造成发布exe 时候生成如下结构

App

---App.exe

---Microsoft.Data.ConnectionUI.Dialog.dll

---Microsoft.Data.ConnectionUI.dll

---zh-CN

---Microsoft.Data.ConnectionUI.Dialog.resources.dll

由于原生的DLL与语言包之间是使用.net 资源DLL(Microsoft.Data.ConnectionUI.Dialog.resources.dll)“Zh-CN” 对应关系,所有在应用程序的物理存储上面看上去不是太美观。介于此本人想整合三个DLL为一个DLL,直接在程序中使用,发布程序如下图所示的存储分布。

App

---App.exe

---DBConnectSetting.dll

一个 DBConnectSetting.dll 包含上述三个关键的DLL,也就是这次整合的核心关键。

解决思路

1、整合

Microsoft.Data.ConnectionUI.Dialog.dll

Microsoft.Data.ConnectionUI.dll

这两个是核心代码,所有的逻辑都在这个两个里面。

2、本地化整合后的

DBConnectSetting.dll 使其自生包含中文,不再外挂资源 Microsoft.Data.ConnectionUI.Dialog.resources.dll

实施过程:

1、整合两个 DLL 使用 ILMergeGui,注意是需要先安装ILMerge

ILMerge 下载地址:http://research.microsoft.com/en-us/people/mbarnett/ilmerge.aspx

ILMergeGui 下载地址:https://ilmergegui.codeplex.com/

选择两个文件后后,合并输出即可。主要合并配置如下



2、本地化

使用DotNetHelper反编译 Microsoft.Data.ConnectionUI.Dialog.resources.dll ,提取所包含的资源文件,并使用带有Zh-CN 的资源文件替换不带有Zh-CN的资源文件,复制一份处理好的资源文件准备一下步的操作。



3、反编译合并后的文件DBConnectSetting.dll 同样输出上图中的资源文件,将刚才准备好的资源文件全部替换覆盖,再次使用DotNetHelper 重新编译。

最终生成的DBConnectSetting.dll 就是汉化好了的文件了。注:在这次整合的重新编译时候出现报错,重新编译不过去,后面注意观察是翻译后的资源文件字符串过长导致,个别资源文件报错,就使用 Resourcer for .NET 矫正一下即可。

4、完工!

程序中调用展示:



点击 更改数据源 可支持多数据源类型,这些都是微软这个组建自生支持的。



点击高级,可详细的配置连接字符串,也是这个微软原生 所支持的。



C# 中代码如下:

Microsoft.Data.ConnectionUI.DataConnectionDialog dlg = new Microsoft.Data.ConnectionUI.DataConnectionDialog();

//添加界面所支持的数据源类型
dlg.DataSources.Add(Microsoft.Data.ConnectionUI.DataSource.SqlDataSource);
dlg.DataSources.Add(Microsoft.Data.ConnectionUI.DataSource.AccessDataSource);
dlg.DataSources.Add(Microsoft.Data.ConnectionUI.DataSource.OdbcDataSource);
dlg.DataSources.Add(Microsoft.Data.ConnectionUI.DataSource.OracleDataSource);
dlg.DataSources.Add(Microsoft.Data.ConnectionUI.DataSource.SqlFileDataSource);

dlg.SelectedDataSource = Microsoft.Data.ConnectionUI.DataSource.SqlDataSource;
dlg.SelectedDataProvider = Microsoft.Data.ConnectionUI.DataProvider.SqlDataProvider;
//赋值一个已存在的连接字符串给界面控件
dlg.ConnectionString = this.ConnectString;

Microsoft.Data.ConnectionUI.DataConnectionDialog.Show(dlg,owner);
if (!String.IsNullOrEmpty(dlg.ConnectionString))
{
//保存修改过的界面配置连接到文本
this.ConnectString = dlg.ConnectionString;
}

代码上很简单,其实也就是直接用微软写好的东西。

自己写也可以写,也不难,但是有现成的就用吧!

已编译好的DLL:http://download.csdn.net/detail/sliphades/4923214
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐