読者です 読者をやめる 読者になる 読者になる

ASP&COM+の呪縛から逃れられない.NET初心者の今日のまとめ

.NET ASP COM+

.NETで作るクラスライブラリをCOM+コンポーネントとして使うために必須の手順は・・・

(1) AssemblyInfo.{cs,vb}でComVisibleを変更

// ComVisible を false に設定すると、このアセンブリ内の型は COM コンポーネントには 
// 参照不可能になります。COM からこのアセンブリ内の型にアクセスする場合は、 
// その型の ComVisible 属性を true に設定してください。
[assembly: ComVisible(true)] // ←ココ

(2) 機能を実装するクラスのソースにServer.CreateObject()で指定してもらう名前を指定します。

using System;
// その他もろもろ

namespace YourProject
{
    [System.Runtime.InteropServices.ProgId("YourProject.YourClass")] // ←ココ
    public class YourClass
    {
        public YourClass()
        {
            // 初期化いろいろ
        }

        // その他いろいろ
    }
}

.NETで作るクラスライブラリをCOM+コンポーネントとして使うためにはregasmコマンドを使います。
アンマネージコードのDLLはregsvr32コマンドを使っていたのの類推で覚えましょうー。
regasmコマンドはスタートメニューから「SDK コマンド プロンプト」で開いた(いわゆる)DOS窓で実行します。

クラスライブラリの登録はこちら。

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0>regasm /codebase C:\path\to\your\classLibrary.dll

登録解除はこちら。

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0>regasm /unregister /registered C:\path\to\your\classLibrary.dll

しかし、クラシックASPIISから使っているので、再登録の手順はこうなります。

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0>iisreset /stop
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0>regasm /unregister /registered C:\path\to\your\classLibrary.dll
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0>copy A:\new\your\classLibrary.dll C:\path\to\your\classLibrary.dll
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0>regasm /codebase C:\path\to\your\classLibrary.dll
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0>iisreset /start

入れ替え用のコマンドスクリプト(*.cmd)を用意してあげると親切ですね。

#参照URL多数。プロジェクトがデスマってるので書く余裕無いです。