在 VB6 中使用 .NET 库和 XML






3.72/5 (9投票s)
如何在 VB6 中使用 .NET 库和 XML。
引言
.NET 应用程序通常不再使用 INI 文件和注册表。那么该使用什么呢?XML 看起来很合适,但只要看一眼 System.XML
就足以让大多数开发者望而却步,尤其是仅仅为了存储几个字段。幸运的是,.NET 提供了一种非常简单的方法来解决这个问题,但这种方法通常不被开发者所注意到。在这篇文章中,我将解释如何用几行代码轻松地存储和检索应用程序设置。
背景
在 Windows 3.1 中,开发者使用 INI 文件来存储设置。总的来说,它们对于简单的设置效果很好,但不适合更复杂的数据。INI 文件也无法处理多用户,因此微软发明了注册表。
随着 Win32 的出现,注册表也随之而来。注册表速度快、分层化、支持多用户,并允许存储类型化数据。但不幸的是,注册表是一个核心系统组件,并没有包含在应用程序安装中。
接下来,XML 变得流行起来。XML 提供了快速、分层化的类型化数据存储。然而,XML 非常灵活,对大多数用户来说,做任何简单的事情都是一项艰巨的任务。幸运的是,有一些比使用 System.XML
并自己处理一切更简单的方法。
使用代码
要使用该类,您只需要关注两个方法
void GetSettings(String Key)
void WriteSetting(String Key, String KeyValue, bool encode)
设置 XML 设置文件的路径和文件名。
根据键名和值名将一个值写入设置文件。encode
选项用于加密该值。
// Read Data
TxtServerName.Text = Configure.getSetting("DBServer");
//Save data
Configure.writeSetting("DBServer", TxtServerName.Text, false);
//Read data from .net in vb6
Dim x As New Configuration.configure
TxtDBServer.Text = CStr(x.getSettingFromVB6("DBServer"))
如果 XML 文件不存在,或者如果某个键/值不存在,Write 方法将创建它,而 Get 方法将返回默认值。
第一阶段:创建控件
在我们的案例中,这花了三个阶段中最长的时间,仅仅是因为控件的性质以及计算文本位置等。我将不深入探讨我们的控件细节,只介绍 VB6 互操作所需的步骤。
- 从 Visual Studio 中创建一个新的 Windows 控件库项目。
- 在属性页的 Debug 和 Release 模式下,都勾选“Register for COM Interop”复选框。
- 在 AssemblyInfo.cs 文件中,将程序集级别的属性
ComVisible
更改为true
。如果该属性尚未在配置文件中,则添加它。
[assembly: ComVisible(true)]
这就是使项目对 VB6 项目可见所需的一切。
属性
关于这些内容的一点说明:属性会暴露给 VB6,因此,就像 .NET 控件一样,如果您想暴露一个值,您必须将其封装在 Property 表达式中。您不能仅仅使其成为一个可见的字段。
第二阶段:注册程序集
在使用 VB6 之前,必须在客户端计算机上注册该库。如果它未在开发计算机上注册,那么它将不会在 VB6 的“References”对话框中显示。如果它未在安装计算机上注册,那么它与未注册的经典 DLL 或 ActiveX 控件的问题类似。“Register for COM Interop”复选框在 VS2005 中运行时会自动执行此注册,但在 VS 关闭时会取消注册。
要注册程序集,您必须使用 .NET 等效的 regsvr32,即 regasm。它位于框架目录中,通常是“C:\WINDOWS\Microsoft.NET\Frmaework\v2.0.50727”。要注册它,请打开命令提示符并运行以下命令,假设框架目录和程序集目录在环境变量的当前路径中。
regasm.exe Assembly.dll
第三阶段:添加到 VB6 项目
这里的关键是 VBControlExtender
对象,它允许在 VB6 窗体上托管 .NET 控件。但是,第一步是添加您刚刚注册的程序集的引用。这可以通过在 Project | References 菜单中勾选相应的框来完成。
完成此操作后,就可以将以下代码添加到项目窗体的代码中。
结论
XML 文件是一种广泛的标准,它允许轻松地存储结构化的类型化数据。使用 XML 文件可以方便地由最终用户甚至其他软件进行编辑。使用 System.XML
,您可以轻松地将您的设置存储在 XML 文件中。
历史
- 2008 年 3 月 10 日 - 原始文章。