ASP&COM+の呪縛から逃れられない.NET初心者の今日のまとめ
.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
しかし、クラシックASPでIISから使っているので、再登録の手順はこうなります。
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多数。プロジェクトがデスマってるので書く余裕無いです。