.tlbをリソースファイルとして.NETアセンブリDLLに埋め込む方法は?

StackOverflow https://stackoverflow.com/questions/417803

  •  03-07-2019
  •  | 
  •  

質問

COM(CCW)を介してネイティブC ++内で.NETアセンブリDLLを使用しています。 DLLの新しいバージョンを作成するたびに、2つのファイル(.dllおよび対応する.tlb)をコードで使用している乗組員に送信する必要があります。

.tlbファイルを.NET DLLファイルのリソースとして埋め込むことは可能ですか?

役に立ちましたか?

解決

Visual Studio .NETでこれを行うのは簡単ではありませんが、実行できます。基本的なレベルで、あなたがしなければならないことはこれです:

  1. TLBファイルを生成します(例:" YourLibrary.tlb")。

  2. " YourLibrary.rc"などのWin32リソーススクリプトファイルを作成します。テキストエディタ(メモ帳、またはVisual Studioのファイル/新規/ファイル... /テキストファイルなど)を使用します。

  3. スクリプトファイルに、次のテキストを逐語的に入力します(ただし、実際のTLBファイル名はもちろん置き換えます):

    1 typelib" YourLibrary.tlb"

  4. スクリプトファイルをTLBファイルと同じフォルダーに保存します。

  5. Visual Studioコマンドプロンプトから、スクリプトファイルがあるフォルダーに移動し、次のコマンドを使用してコンパイルします。

    rc YourLibrary.rc

    これにより、" YourLibrary.res"という同じフォルダにWin32リソースファイルが生成されます。

  6. Visual Studioで、ソリューションエクスプローラーのプロジェクトノード(例:" YourLibrary")を右クリックし、[プロパティ]を選択します。

  7. 「アプリケーション」タブの「リソース」の下で、「リソースファイル」を選択します。オプションを選択して" YourLibrary.res"を参照します。手順5のファイル。

  8. プロジェクトを保存して再構築します。

TLBは、他のCOMアプリケーションが読み取れるように、DLLにリソースとして埋め込まれます。

TLBファイルを後で再生成する場合は、手順5を繰り返してリソースファイルを再コンパイルし、手順8を繰り返して新しいバージョンをDLLに埋め込みます。

とはいえ、ビルドイベントを使用して、またはプロジェクトファイルにカスタムMSBuildターゲットを配置することで、この一部を自動化できる場合もありますが、それはまったく別の議論です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top