1

COM サーバーを使用する .NET アプリケーションがあります。COM サーバーは、それを実行するマシンに登録されているため、コードがnew MyInterop.SomeObject()適切な場所に到達すると、COM サーバーがMyComServer.exe開始されます。

MyComServer.exeただし、デバッグしていると、さまざまな構成ファイルを持つさまざまなフォルダーに存在する のコピーがいくつかあります。どのアプリをロードするかを指定したいと思います。

私が知っている2つの回避策は次のとおりです。

  • 使用前に毎回(MyComServer.exe /regserver)再登録できます。しかし、ローカルの問題にグローバルなソリューションを使用するのは好きではありません。
  • 手動で開始するMyComServer.exeと (その後、スタンドアロン アプリとして実行されます)、COM インフラストラクチャはこの既存のプロセスを再利用します。しかし、それはあまり自動化できません。

もっと適切なものはありますか?

4

2 に答える 2

1

COMサーバーの.exeは、新しいMyInterop.SomeObject()呼び出しによって開始されました。.NETを適切にシャットダウンしてファイナライザスレッドの参照カウントを減らすことなく、デバッグ中にプログラムを終了したため、非常に多くの.exeが実行されていることは間違いありません。COMには、これらの失われた参照をクリーンアップするメカニズムがありません。Taskmgr.exeの[プロセス]タブを使用して、実行中のインスタンスを強制終了します。

COMには、ROT(Running Object Table)を介してサーバーの実行中のインスタンスに接続するメカニズムがあります。ただし、これは後で追加できるものではなく、サーバーによって明示的にサポートされている必要があります。サーバーをいじくり回すオプションが必要な場合は、代わりにインプロセスサーバーにすることを検討してください。それほど面倒ではありません。

于 2011-12-06T16:20:22.810 に答える
0

デバッグ バージョンに基づいて構成ファイルを動的に作成してみることができます。

于 2011-12-06T15:10:42.670 に答える