4

ASP と VBScript を使用してアプリケーションを作成しています。.Net アプリケーション用に作成されたライブラリしか見つかりません。そこで、クラス ライブラリ ラッパーを作成して、VB.Net (Microsoft Visual Basic 2010 Express) を使用して DLL にコンパイルしようとしました。

DLL は自分のデスクトップ(Windows 7) では動作しますが、サーバー (Server 2000) では失敗します。

エラーメッセージは「指定されたファイルが見つかりません」

サーバー構成

OS : Microsoft Windows 2000 サーバー (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 を正常に登録しました

ただし、Object1 は VB6 と VBScript のどちらを使用しても作成できません。

VBScript で使用したスクリプトは次のとおりです。

Option Explicit

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

どんな助けでも大歓迎です!

アレックス

4

1 に答える 1

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 を使用してコマンド ラインからテスト スクリプトを実行してみてください。

于 2013-08-23T04:58:32.763 に答える