Windows应用程序与配置文件

来源:互联网 发布:邮箱采集软件 编辑:程序博客网 时间:2024/06/10 13:43
为每个应用程序提供一个配置文件已经不是什么新鲜的想法了,在早期的Windows中,许多程序通常都提供一个扩展名为“.ini”或“.dat”之类的物件以定制化程序或为应用程序提供扩展描述。Microsoft公布.NET框架后,基于Windows的exe文件有了一定的微妙的变化,这就是每个exe文件在.NET框架下匹配了一个“Config”文件,就是说,如果可执行文件的文件名是“AppName.exe”,那么,.NET会自动识别与之匹配的配置文件“AppName.exe.config”,这种扩展名为“.Config”的文件是一个XML文件。一个典型的配置文件如下:
<configuration>
  <appSettings>
</appSettings>
<runtime>
    <assemblyBindingxmlns=/"urn:schemas-microsoft-com:asm.v1/">
      <probingprivatePath=/"bin;usercontrol;component;doctemplate/">
      </probing>
    </assemblyBinding>
</runtime>
<!-- -->
<TangramMainAssemblyLib=/"TangramDeskManager/"
           MainAssemblyCategory=/"TangramDeskManager/"
           MainFrameAssembly=/"TangramDeskManager.Application/"
           ExternalAppCOMComponent=/"/"
           ExternalAppAssembly=/"/"
           WorkSpaceGUID=/"{9905F281-9C5D-440b-89AF-EE61D3FA548A}/"
           Tag=/"officexp/">
    <Caption>Welcome To Tangram World!</Caption>
    <WorkSpaceRunModel=/"/"></WorkSpace>
    <BackgroundType=/"html/">background.htm</Background>
    <RegistryKey=/"TangramDesigner/"StdProfileSettings=/"4/"></Registry>
    <Skin>Merlin ENI//Merlin ENI.uis</Skin>
    <VBAComponent>DocVbaServer.VbaServer.1</VBAComponent>
    <MDITabbedClientTag=/"/">TangramDeskManager.MDIClientImpl.1</MDITabbedClient>
    <TangramToolBarID>TangramBarManager.BarManager.1</TangramToolBarID>
    <TangramControlBarID>TangramLiteControlBarD.TangramLiteBar.1</TangramControlBarID>
    <AppPlugin>
      <!-- Add Application Plugin here: <Plugin>Test.plug</Plugin> -->
    </AppPlugin>
</Tangram>
</configuration>
在.NET环境下,有一组API专门处理这类配置文件,而且,典型的.NET应用,例如Asp.net的宿主环境的关键配置对配置文件的依赖性极大,可以说,配置文件在局部意义上相当于一个“局部”注册表。针对.NET程序而言,由于.NET组件不需要再注册表中注册,因此,一个.NET程序如何搜索到一个具体的组件就显得十分重要,在配置文件中,包含如下节点:
<runtime>
    <assemblyBindingxmlns=/"urn:schemas-microsoft-com:asm.v1/">
      <probingprivatePath=/"bin;usercontrol;component;doctemplate/">
      </probing>
    </assemblyBinding>
</runtime>
在这个节点中,可以得到“privatePath=/"bin;usercontrol;component;doctemplate/"”,这个字符串是用“;”分割的一系列“子目录”名,按照.NET框架的实现,如果开发者在所开发的程序所在的目录下创建这个字符串标示的每个子目录,那么,当这个程序需要.NET组件时,就会在这些“本地”目录中寻找。
         事实上,即使与.NET相对无关的Win32或Win64程序也可以充分利用这个默认的配置文件,这样做的好处是,当你的系统需要.NET支持时,可以自然的利用.NET提供的“好处”,我们会在以后的文章中介绍如何开发一个真正的Win32程序,使得在需要的时候,这类Win32程序可以支持.NET组件,典型的这类Win32系统是Microsoft Internet Explorer以及Microsoft Office等应用系统,这类系统的基础框架都是Win32的,但均可以宿主.NET引擎。 此外,应用XML读写技术,这类配置文件可以使得应用系统与Windows系统的注册表隔离以减轻注册表的负担,同时也为所谓的“绿色软件”提供良好的支持。