.NET 程序集是一个由类型、元数据和可执行代码组成的程序包。在 .NET 应用程序中,所有代码必须都在程序集中。程序集文件的扩展名为 .dll 或 .exe。
存在以下类型的程序集:
专用程序集 专用程序集是文件系统中的一个文件。
共享程序集 共享程序集是安装在全局程序集高速缓存中的程序集。
MobiLink 必须先找到一个包含某个类的程序集,然后才能装载该类并调用该类的方法。MobiLink 只需要找到它直接调用的程序集。然后,该程序集便可调用它所需要的任何其它程序集。
例如,MobiLink 调用 MyAssembly,而 MyAssembly 调用 UtilityAssembly 和 NetworkingUtilsAssembly。在这种情况下,只需要通过配置使 MobiLink 能够找到 MyAssembly。
MobiLink 提供了以下装载程序集的方法:
使用 -sl dnet ( -MLAutoLoadPath ) 此选项只适用于专用程序集。此选项将路径设置为应用程序基目录,并装载该目录下的所有程序集。
如果使用 -MLAutoLoadPath 选项,则在输入事件脚本的完全限定方法名时不能指定域。
通过 -MLAutoLoadPath 选项指定了路径和目录后,MobiLink 将执行以下操作:
将该目录设置为应用程序基路径
装载指定目录中所有扩展名为 .dll 或 .exe 的文件内的所有类
创建一个应用程序域,并将所有未指定域的用户类载入该域
不能通过此选项直接调用全局程序集高速缓存中的程序集。要调用这些共享程序集,请使用 -MLDomConfigFile。
使用 -sl dnet ( -MLDomConfigFile ) 此选项既适用于专用程序集,也适用于共享程序集。它需要一个包含域和程序集设置的配置文件。您可在以下情况下使用此选项:当您具有共享程序集时,当您不想装载应用程序基路径中的所有程序集时,或者当您出于某种其它原因需要使用配置文件时。
如果使用此选项,MobiLink 将读取指定域配置文件中的设置。域配置文件包含一个或多个 .NET 域的配置设置。如果该文件中指定了多个域,将使用指定的第一个域作为缺省域。(对于未指定域的脚本,将使用缺省域。)
装载程序集时,MobiLink 首先尝试装载专用程序集,然后尝试从全局程序集高速缓存中装载程序集。专用程序集必须位于应用程序基目录中。共享程序集从全局程序集高速缓存中装载。
使用 -MLDomConfigFile 选项时,只能从事件脚本直接调用域配置文件中指定的程序集。
随 MobiLink 一起安装了一个名为 mlDomConfig.xml 的示例域配置文件。您可以从头编写您自己的文件,也可以根据您的需要对示例文件进行修改。示例文件位于 SQL Anywhere 路径中,其位置是:
MobiLink\setup\dnet\mlDomConfig.xml
以下是示例域配置文件 mlDomConfig.xml 的内容:
<?xml version="1.0" encoding="utf-8"?> <config xmlns="iAnywhere.MobiLink.mlDomConfig" xsi:schemaLocation='iAnywhere.MobiLink.mlDomConfig mlDomConfig.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' > <domain> <name>SampleDomain1</name> <appBase>C:\scriptsDir</appBase> <configFile></configFile> <assembly name="Assembly1" /> <assembly name="Assembly2" /> </domain> <domain> <name>SampleDomain2</name> <appBase>\Dom2assembly</appBase> <configFile>\Dom2assembly\AssemblyRedirects.config</configFile> <assembly name="Assembly3" /> <assembly name="Assembly4" /> </domain> </config> |
以下是对 mlDomConfig.xml 内容的解释:
name 域名,在事件脚本中指定域时使用。格式为 ["DomainName:Namespace.Class.Method"
] 的事件脚本要求域配置文件中具有名为 DomainName 的域。
必须指定至少一个域名。
appBase 该域用作其应用程序基目录的目录。所有专用程序集都由 .NET CLR 根据该目录装载。必须指定 appBase。
configFile 应该用于该域的 .NET 应用程序配置文件。此元素可以为空。它通常用于修改缺省程序集捆绑和装载行为。有关应用程序配置文件的详细信息,请参见 .NET 文档。
assembly MobiLink 在解析事件脚本中的类型引用时应装载并搜索的程序集的名称。必须指定至少一个程序集。如果多个域中都使用某个程序集,则必须分别在各个域中将其指定为程序集。如果该程序集是专用程序集,则其必须位于该域的应用程序基目录中。
有关 mlsrv11 选项 -sl dnet 的详细信息,请参见-sl dnet 选项。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |