2012-04-12 20 views
2

どのように私は最初に何かを書き換える必要がないように、COMサーバをCLRアセンブリに変換できますか?COMアセンブリをCLRアセンブリに変換するにはどうすればよいですか?

+1

がです、これはと意味:COMオブジェクトを使用

enter image description here

クライアントは、COMの機能を使用するために、2

#using "Add32Pkg"; 

次にステップで作成した名前空間を使用してメタデータをインポートする必要があります(非常に良い、包括的な)自己解答?いずれにしても質問がないからです! – Widor

+0

これは、COMアセンブリをCLRアセンブリに変換するために行ったことの文書を提供する私の方法でした。ちょうどコミュニティと共有したいと思った。 –

+1

それはうまくいく(そして励まされる) - ちょうど「より良い礼儀」だ(http://meta.stackexchange.com/questions/17463/can-i-answer-my-own-questions-even-those-where-i-あなたの情報が答えたことを質問するために、あなた自身の質問に答えてください。これにより、2つのことが可能になります - 他のものは潜在的により良い回答を追加することができ、回答を探している人はより簡単に検索できます。 – Widor

答えて

0

私はこれをOPのためにここに掲載しました。彼らはそれをorigionally質問の編集として投稿しました。

.NETでCOMサーバー(1992年にC++/MFCを使用して書かれています)を書き直すのではなく、CLRアセンブリに変換することに決めました。 COMアセンブリ(add32.exe)を使用して.Netクライアントから使用するには、呼び出し可能なラッパーを作成する必要があります。 Visual Studioのコマンドプロンプト(管理者として)ですべてのツールを実行します。

ステップ1:厳密な名前でCOMアセンブリに署名し

enter image description here

ステップ2:CLRアセンブリにCOMタイプライブラリで見つかった定義

は定義を変換する変換Tlbimp.exeツールを使用してCOMタイプライブラリでCLRアセンブリに追加されました。 Tlbimp.exeの出力は、元のタイプライブラリ内で定義されたタイプのランタイムメタデータを含むバイナリファイル(アセンブリ)です。出力はDLLファイルです。 .Net COMクライアントにメタデータを簡単に含めることができるように名前空間を指定します。

enter image description here

ステップ3:使用Ildasm.exeをアセンブリを表示します。 enter image description here

我々は、溶液中のそれのための参照を作成するために、CLRアセンブリを使用します。 dllファイルを参照し、参照として追加します。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Runtime.InteropServices; 
using Add32Pkg; 

namespace TestAdd32 
{ 

    class Program 
    { 
     [STAThread] 
     static void Main(string[] args) 
     { 

      Add32Server Add32 = new Add32Server(); 
      Add32.Init(201); 
     } 
    } 
} 
関連する問題