WIN2000支持.Net2.0的
除非你用了XP的API

解决方案 »

  1.   

    直接部署就行,。如果你用了API,就得别论了。去网上搜搜吧
      

  2.   

    供asp用
    需要用com封装你的.net dll
    具体步骤如下对于开发人员而言,编写 .NET 类型和从非托管代码中使用该类型是截然不同的活动。本节将介绍几条有关编写与 COM 客户端互用的托管代码的提示。 为互用性限定 .NET 类型。 
    要向 COM 公开的所有托管类型、方法、属性、字段和事件都必须是公共的。类型必须具有公共的默认构造函数,该构造函数是唯一可以通过 COM 调用的构造函数。 应用 Interop 属性。 
    托管代码中的自定义特性可以增强组件的互用性。 将 COM 的程序集打包。 
    COM 开发人员可能会要求您总结引用和部署程序集所涉及的步骤。 另外,本节还将说明有关从 COM 客户端使用托管类型的任务。从 COM 中使用托管类型 向 COM 注册程序集。 
    程序集(和类型库)中的类型必须在设计时注册。如果安装程序未注册程序集,应指示 COM 开发人员使用 Regasm.exe。 从 COM 中引用 .NET 类型。 
    COM 开发人员可以通过他们当前使用的相同工具和技术来引用程序集中的类型。 调用 .NET 对象。 
    COM 开发人员可以按照对任何非托管类型调用方法的相同方式来对 .NET 对象调用方法。例如,COM CoCreateInstance API 将激活 .NET 对象。 为 COM 访问部署应用程序。 
    具有强名称的程序集可以安装在全局程序集缓存中并需要其发行者的签名。不具有强名称的程序集必须安装在客户端的应用程序目录中。 
      

  3.   

    如果要向 COM 应用程序公开程序集中的类型,应考虑 COM Interop 在设计时的要求。如果符合以下原则,托管类型(类、接口、结构和枚举)将与 COM 类型紧密集成: 类应显式实现接口。 
    虽然 COM Interop 提供了一种机制来自动生成包含类的所有成员及其基类成员的接口,但最好提供显式接口。自动生成的接口称作类接口。有关指南,请参见类接口简介。 您可以使用 Visual Basic .NET、C# 和 C++ 托管扩展将接口定义包含在代码中,而不必使用接口定义语言 (IDL) 或其等效语言。有关语法的详细信息,请参见您所用语言的文档。如需包含接口定义的示例代码,请参见 Windows Sever 2003。 托管类型必须是公共的。 
    只有程序集中的公共类型才会注册并导出到类型库中。因此,只有公共类型才对于 COM 可见。 托管类型将向其他未向 COM 公开的托管代码公开功能。例如,参数化的构造函数、静态方法和常数字段不会向 COM 客户端公开。此外,当运行库在类型中和类型外封送数据时,可能会复制或转换数据。 方法、属性、字段和事件必须是公共的。 
    如果要对于 COM 可见,公共类型的成员也必须是公共的。通过应用 ComVisibleAttribute,可以限制程序集、公共类型或公共类型的公共成员的可见性。默认情况下,所有公共类型和成员都是可见的。 类型必须有一个公共默认构造函数才能从 COM 中激活。 
    托管的公共类型对于 COM 是可见的。但是,如果没有公共默认构造函数(无参数的构造函数),COM 客户端将无法创建该类型。如果该类型由其他方法激活,则 COM 客户端仍可使用该类型。 类型不能是抽象的。 
    COM 客户端和 .NET 客户端都不能创建抽象的类型。 当导出到 COM 后,托管类型的继承层次结构将被展平。在托管和非托管环境之间,版本控制也会有所不同。向 COM 公开的类型不具有与其他托管类型相同的版本控制特性。
      

  4.   

    System.Runtime.InteropServices 命名空间提供了三种类别的 Interop 特定属性:您在设计时应用的特性、COM Interop 工具和 API 在转换过程中应用的特性,以及您或 COM Interop 应用的特性。如果您不熟悉将特性应用于托管代码这一任务,请参见利用属性扩展元数据。与其他自定义特性类似,Interop 特定的特性可以应用于类型、方法、属性、参数、字段和其他成员。设计时特性
    利用设计时特性,可以调整 COM Interop 工具和 API 所执行的转换过程的结果。下表将说明可应用于托管源代码的特性。有时,COM Interop 工具也可能会应用下表所述的特性。属性 说明 
    AutomationProxyAttribute 指定应使用自动封送拆收器还是自定义的代理和存根 (stub) 来封送类型。 
    ClassInterfaceAttribute 控制为类生成的接口类型。 
    CoClassAttribute 标识从类型库导入的初始 coclass 的 CLSID。 
    COM Interop 工具通常应用此属性。
     
    ComImportAttribute 指示 coclass 或接口定义是从 COM 类型库导入的。运行库利用此标志来确定如何激活和封送类型。该特性禁止将类型导回类型库。 
    COM Interop 工具通常应用此属性。
     
    ComRegisterFunctionAttribute 指示应该在注册程序集(使其可从 COM 中使用)时调用方法,以便在注册过程中执行用户编写的代码。 
    ComSourceInterfacesAttribute 标识作为类事件源代码的接口。 
    COM Interop 工具可应用此特性。
     
    ComUnregisterFunctionAttribute 指定应该在从 COM 中注销程序集时调用方法,以便在此过程中执行用户编写的代码。 
    ComVisibleAttribute 使类型在特性值等于 false 时对于 COM 不可见。可以向单个类型或整个程序集应用此特性,以控制 COM 可见性。默认情况下,所有托管的公共类型都是可见的,因此不需要使用该特性来使其变为可见。 
    DispIdAttribute 指定方法或字段的 COM 调度标识符 (DISPID)。该特性包含它所描述的方法、字段或属性的 DISPID。 
    COM Interop 工具可应用此特性。
     
    FieldOffsetAttribute 指示当与 StructLayoutAttribute 一起使用且将 LayoutKind 设置为 Explicit 时,每个字段在类中的物理位置。 
    GuidAttribute 指定类、接口或整个类型库的全局唯一标识符 (GUID)。传递给特性的字符串必须为类型 System.Guid 可接受的构造函数参数格式。 
    COM Interop 工具可应用此特性。
     
    IDispatchImpAttribute 指示当向 COM 公开双重接口和调度接口时公共语言运行库使用何种 IDispatch 接口实现。 
    InAttribute 指示应将数据封送到调用方中。可用于表示参数的特性。 
    InterfaceTypeAttribute 控制如何向 COM 客户端(双重、由 IUnknown 导出或仅 IDispatch)公开托管接口。 
    COM Interop 工具可应用此特性。
     
    LCIDConversionAttribute 指示非托管方法签名需要 LCID 参数。 
    COM Interop 工具可应用此特性。
     
    MarshalAsAttribute 指示字段或参数中的数据应如何在托管和非托管代码之间封送。由于每种数据类型都具有默认的封送行为,所以此特性始终是可选的。 
    COM Interop 工具可应用此特性。
     
    OptionalAttribute 指示参数是可选的。 
    COM Interop 工具可应用此特性。
     
    OutAttribute 指示字段或参数中的数据必须从被调用的对象封送回它的调用方。 
    PreserveSigAttribute 防止通常在互用调用时发生的 HRESULT 或 retval 签名转换。此特性将影响封送以及类型库导出。 
    COM Interop 工具可应用此特性。
     
    ProgIdAttribute 指定 .NET Framework 类的 ProgID。可用于表示类的特性。 
    StructLayoutAttribute 控制类的各字段的物理布局。 
    COM Interop 工具可应用此特性。
     转换工具特性
    下表将说明 COM Interop 工具在转换过程应用的特性。这些特性不在设计时应用。属性 说明 
    ComAliasNameAttribute 指示参数或字段类型的 COM 别名。可用于表示参数、字段或返回值的特性。 
    ComConversionLossAttribute 指示从类型库向程序集导入类或接口时丢失了有关信息。 
    ComEventInterfaceAttribute 标识源接口和实现事件接口方法的类。 
    ImportedFromTypeLibAttribute 指示程序集最初是从 COM 类型库导入的。此特性包含原类型库的类型库定义。 
    TypeLibFuncAttribute 包含最初为此函数从 COM 类型库导入的 FUNCFLAGS。 
    TypeLibTypeAttribute 包含最初为此类型从 COM 类型库导入的 TYPEFLAGS。 
    TypeLibVarAttribute 包含最初为此变量从 COM 类型库导入的 VARFLAGS。 
      

  5.   

    以下有关托管类型的信息将使要将这些类型包含在其应用程序中的 COM 开发人员受益: COM 应用程序可使用的类型的列表 
    有些托管类型对于 COM 不可见;有些可见但无法创建;还有些既可见又可创建。程序集可以包括不可见、可见、无法创建和可创建类型的任意组合。为了确保完整性,应确定程序集中要向 COM 公开的类型,尤其是当这些类型是要向 .NET Framework 公开的类型子集时。 有关其他信息,请参见为互用性限定 .NET 类型。 版本控制指南 
    实现类接口(由 COM Interop 生成的接口)的托管类会受到版本控制的限制。 有关如何使用这些类接口的指南,请参见类接口简介。 部署指南 
    由发行者签名并带有强名称的程序集可以安装到全局程序集缓存中。未签名的程序集必须作为专用程序集安装在用户的计算机上。 有关其他信息,请参见程序集安全注意事项。 类型库包含 
    大多数类型在由 COM 应用程序使用时,都需要类型库。您可以生成一个类型库或让 COM 开发人员执行此任务。.NET Framework SDK 为生成类型库提供了以下选项: 类型库导出程序 
    TypeLibConverter 类 
    程序集注册工具 
    .NET 服务安装工具 
    无论您选择哪种机制,只有在您提供的程序集中定义的公共类型才会包括在生成的类型库中。 可以将类型库包装为单独的文件或将其作为 Win32 资源文件嵌入到基于 .NET 的应用程序中。Microsoft Visual Basic 6.0 为您自动执行此任务;但是,在使用 Microsoft Visual Basic .NET 时,必须手动嵌入类型库。将类型库作为 Win32 资源嵌入到基于 .NET 的应用程序中 将您的托管应用程序编译为库文件。例如,若要为名为 MyApp 的应用程序创建一个程序集,请在命令提示处键入下列命令: 
    [Visual Basic]
    vbc /t:library MyApp.vb[C#]
    csc /t:library MyApp.cs使用 Tlbexp.exe 从程序集导出类型库文件。在命令提示处,键入下列命令: 
    tlbexp MyApp.dll /out:mytypelib.tlb创建包含以下语句的资源脚本: 
    IDR_TYPELIB1 typelib "mytypelib.tlb"此示例中,脚本文件名是 myresource.rc。 用 Microsoft Windows 资源编译器 (Rc.exe) 编译脚本。在命令提示处,键入下列命令: 
    rc myresource.rcRc.exe 产生 myresource.res 资源文件。 再次编译源文件并指定资源文件。在命令提示处,键入下列命令: 
    [Visual Basic]
    vbc /t:library MyApp.vb /win32res:myresource.res[C#]
    csc /t:library MyApp.cs /win32res:myresource.res类型库导出程序
    类型库导出程序 (Tlbexp.exe) 是一种命令行工具,它用于将包含在程序集中的类和接口转换为 COM 类型库。当类的类型信息成为可用时,COM 客户端就可以创建 .NET 类的一个实例并调用该实例的方法,就好像它是 COM 对象一样。Tlbexp.exe 将同时转换整个程序集。不能使用 Tlbexp.exe 生成程序集中定义的类型子集的类型信息。TypeLibConverter 类
    TypeLibConverter 类(位于 System.Runtime.Interop 命名空间)可将包含在程序集中的类和接口转换为 COM 类型库。此 API 与上节所述的类型库导出程序生成相同的类型信息。TypeLibConverter class 实现 ITypeLibConverter 接口。程序集注册工具
    当应用 /tlb: 选项时,程序集注册工具 (Regasm.exe) 可生成并注册类型库。COM 客户端要求将类型库安装在 Windows 注册表中。如果不使用此选项,Regasm.exe 将只注册程序集(而不是类型库)中的类型。注册程序集中的类型和注册类型库是截然不同的活动。.NET 服务安装工具
    .NET 服务安装工具 (Regsvcs.exe) 可将托管类添加到 Windows 2000 组件服务中,并在一个工具中组合了多项任务。除了加载和注册程序集之外,Regsvcs.exe 还可以生成、注册类型库并将其安装到现有的 COM+ 1.0 应用程序中。
      

  6.   

    向 COM 注册程序集请参见
    向 COM 公开 .NET Framework 组件 | 从 COM 中引用 .NET 类型 | 调用 .NET 对象 | 为 COM 访问部署应用程序
    您可以运行一个叫做程序集注册工具 (Regasm.exe) 的命令行工具来注册或注销与 COM 一起使用的程序集。Regasm.exe 会将有关类的信息添加到系统注册表中,以便 COM 客户端透明地使用 .NET 类。RegistrationServices 类提供了等效的功能。必须先在 Windows 注册表中注册托管组件,然后才可以从 COM 客户端将其激活。下表显示 Regasm.exe 通常添加到 Windows 注册表中的注册表项。(000...000 指示实际 GUID 值。)GUID 说明 注册表项 
    CLSID 类标识符 HKEY_CLASSES_ROOT\CLSID\{000...000} 
    IID 接口标识符 HKEY_CLASSES_ROOT\Interface\{000...000} 
    LIBID 库标识符 HKEY_CLASSES_ROOT\TypeLib\{000...000} 
    ProgID 编程标识符 HKEY_CLASSES_ROOT\000...000 在 HKCR\CLSID\{0000...0000} 键下,默认值设置为类的 ProgID,并且会添加两个新的命名值:“类”(Class) 和“程序集”(Assembly)。运行库将从注册表中读取“程序集”值,并将其传递给运行库程序集冲突解决程序。程序集冲突解决程序将根据程序集信息(如名称和版本号)尝试查找程序集。为便于程序集冲突解决程序查找程序集,程序集必须位于以下某一位置中: 全局程序集缓存(必须是强名称的程序集)。 
    在应用程序目录中。从应用程序路径加载的程序集只能通过该应用程序进行访问。 
    沿使用 /codebase 选项指定的、指向 Regasm.exe 的文件路径。 
    Regasm.exe 还会在 HKCR\CLSID\{0000...0000} 键下创建 InProcServer32 键。该键的默认值设置为初
      

  7.   

    从 COM 中引用 .NET 类型请参见
    向 COM 公开 .NET Framework 组件 | 向 COM 注册程序集 | 调用 .NET 对象 | 为 COM 访问部署应用程序语言
    C++全部显示
    就客户端和服务器代码而言,COM 和 .NET Framework 之间大多数差异都是不可见的。Microsoft Visual Basic 客户端可以在对象浏览器中查看 .NET 对象,该浏览器将公开对象方法及语法、属性和字段,就像该对象是其他任何 COM 对象一样。
    对于 C++ 客户端,虽然可以使用相同的工具将元数据导出到 COM 类型库中,但导入类型库的过程要略微复杂一些。要从非托管的 C++ 客户端引用 .NET 对象成员,应使用 #import 指令引用 TLB 文件(用 Tlbexp.exe 生成)。从 C++ 中引用类型库时,必须指定 raw_interfaces_only 选项或导入基类库 Mscorlib.tlb 中的定义。
    不用 Mscorlib.tlb 导入库
    [C++]
    #import "..\LoanLib\LoanLib.tlb" raw_interfaces_only
    用 Mscorlib.tlb 导入库
    [C++]
    #import "mscorlib.tlb"
    #import "..\LoanLib\LoanLib.tlb"
      

  8.   

    用 .NET 对象请参见
    向 COM 公开 .NET Framework 组件 | 向 COM 注册程序集 | 从 COM 中引用 .NET 类型 | 为 COM 访问部署应用程序语言
    C++全部显示
    COM 客户端可以创建程序集中公共类的实例并调用该类的公共成员。公共语言运行库将封送托管对象接收和发出的调用。
    以下代码示例将创建 Loan 类的一个实例。COM 客户端无法直接访问类,但可以访问该类实现的接口所公开的调用方法、属性和事件。
    [C++]
    ILoanPtr pILoan(__uuidof(Loan));
    ILoan 接口公开几项方法和属性,包括 GetFirstPmtDistribution 方法。
    [C++]
    pILoan->GetFirstPmtDistribution(payment, &Balance, &Principal, &Interest,
           &MorePmts);
      

  9.   

    为 COM 访问部署应用程序请参见
    向 COM 公开 .NET Framework 组件 | 向 COM 注册程序集 | 从 COM 中引用 .NET 类型 | 调用 .NET 对象 | 部署 .NET Framework 应用程序
    程序集可以是专用或共享的。专用程序集仅可用于与该程序集位于同一目录结构的客户端;共享目录可用于任何本地 COM 应用程序。所有程序集和类型库都必须在 Windows 注册表中注册,以便 COM 客户端透明地使用托管类型。专用程序集
    如果应用程序将要供专用,则可将其部署到应用程序目录和子目录中。下图将显示安装在两个不同应用程序目录中的 Loanlib.dll。要从 Visual Basic 6.0 开发环境中运行专用程序集,程序集必须位于 Visual Basic 可执行文件 (Vb6.exe) 的应用程序目录中。专用部署的目录结构和注册表项共享程序集
    如果应用程序的程序集将要进行共享,则应将其安装在全局程序集缓存中。所有共享程序集必须带有强名称(由发行者签名)。当任何引用程序集中类型的 COM 应用程序遇到 Mscoree.dll 时,都会查找该程序集。使用 Gacutil.exe 将程序集添加到全局程序集缓存 gacutil /i LoanLib.dll 
    请参见
    向 COM 公开 .NET Framework 组件 | 向 COM 注册程序集 | 从 COM 中引用 .NET 类型 | 调用 .NET 对象 | 部署 .NET Framework 应用程序发送有关此主题的意见 © 2001-2002 Microsoft Corporation。保留所有权利。