VBScript中的CreateObject(“...”)无法创建VB.Net类库com对象(Windows Server 2000)

时间:2013-08-23 03:22:57

标签: vb.net com asp-classic vbscript vb6

我正在使用ASP和VBScript编写应用程序。有一个库,我只能找到一个为.Net应用程序编写的库。所以我尝试创建一个类库包装器,并使用VB.Net(Microsoft Visual Basic 2010 Express)将其编译为DLL。

DLL在我自己的桌面(Windows 7)中运行,但在服务器(Server 2000)中失败。

错误消息是“系统找不到指定的文件”

服务器配置

操作系统:Microsoft Windows 2000 Server(SP4)

安装.Net框架:v2.0.50727

我在测试项目中编写的代码只是一个什么都不做的类。

Imports System.IO
Imports System

<ComClass(Object1.ClassId, Object1.InterfaceId, Object1.EventsId)> _
Public Class Object1
#Region "COM GUIDs"
    ' These  GUIDs provide the COM identity for this class 
    ' and its COM interfaces. If you change them, existing 
    ' clients will no longer be able to access the class.
    Public Const ClassId As String = "f5dcfb08-7a83-4501-bd89-03e38cad819c"
    Public Const InterfaceId As String = "8a313e0b-60e5-4ff4-8a7d-e7b1582eec71"
    Public Const EventsId As String = "fe55f7d8-691f-4c76-968a-37019fa9bb53"
#End Region

    ' A creatable COM class must have a Public Sub New() 
    ' with no parameters, otherwise, the class will not be 
    ' registered in the COM registry and cannot be created 
    ' via CreateObject.
    Public Sub New()
        MyBase.New()
    End Sub

    Public Sub Hello()
        '...
    End Sub
End Class

我做了什么:

  • 在编译选项中选择“.NET Framework 2.0”

  • 在我自己的桌面上编译

  • 将Bin \ Release中的所有文件直接复制到服务器上的文件夹中。

  • 使用Regasm.exe

  • 在服务器上成功注册了DLL

但无法使用VB6或VBScript创建Object1。

这是我在VBScript中使用的脚本:

Option Explicit

Dim TestObject
Set TestObject = CreateObject("TestComObject.Object1")

任何帮助将不胜感激!

亚历

1 个答案:

答案 0 :(得分:2)

通过以下检查表:

1)确保将程序集编译为32位(在VB.NET项目设置中)

2)给你的集会一个强有力的名字(http://msdn.microsoft.com/en-us/library/xc31ft41.aspx)。 您也可以在VB.NET项目设置中配置它。

3)使用RegAsm for .NET 2.0(C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ RegAsm.exe)

4)使用“/ codebase”开关调用RegAsm

5)在使用ASP进行测试之前,请尝试使用WScript.exe从命令行运行测试脚本。