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

玩过直接调 数据库配置界面的一定对如下三个东西不陌生

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

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值