知識マップ: Reg-Free COMとは - 登録不要でCOMを使う仕組み

記事「Reg-Free COMとは - 登録不要でCOMを使う仕組み」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

Reg-Free COMは、COMの登録情報をレジストリではなくマニフェストで持たせ、実行時にはアクティベーション コンテキストを先に見てDLLを解決する仕組みです。アプリケーション マニフェストが依存先のside-by-side assemblyを宣言し、コンポーネント マニフェストがCLSIDやProgIDなど本来レジストリにあった情報を持つという分担で、mt.exeで埋め込み、sxstraceで解決失敗を追跡します。ただし32bit/64bitの一致要件は解消されず、依存DLLや型ライブラリの扱いは別論点として残るため、VB6・MFC・WinFormsのような既存デスクトップ資産のアプリローカル化には向く一方、マシン全体でのCOM共有を必要とする場面には向きません。.NET 5+/.NET 8ではEnableComHostingでcomhostを作り、EnableRegFreeComを有効にすることでReg-Free COM用のside-by-sideマニフェストを出力できます。

Reg-Free COMの知識マップReg-Free COMがアクティベーション コンテキストとside-by-side assemblyの仕組みでCOMの登録情報をアプリ単位に持たせること、アプリケーション マニフェストとコンポーネント マニフェストの役割分担、mt.exeによる構成とsxstraceによる障害調査、.NET 5+のcomhostとの関係を示す図利用する利用する利用する前提とする実装を担う前提とするの後継利用するで構成できるで確認できるで構成できる前提とする利用する前提とするで構成できる実装を担う利用する利用する利用する利用する利用する利用する推奨される対応推奨される対応推奨される対応用いるのは非推奨Reg-Free COM(登録不要COM)アクティベーション コンテキストアプリケーションマニフェスト(Win32 side-by-side)コンポーネント マニフェスト(assembly manifest)side-by-side assemblybitness一致要件regsvr32型ライブラリ(TLB)mt.exe(マニフェスト ツール)sxstraceprivate assemblyの探索順序.NET(Core以降)COM host(*.comhost.dll)EnableComHostingEnableRegFreeComVisual Basic 6.0(VB6)CLSID(Class ID)ProgID(Programmatic Identifier)COM(コンポーネントオブジェクトモデル)ActiveXOCXMFC(Microsoft Foundation Classes)Windows FormsCOMのマシン全体共有

概念間の関係(全26件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Reg-Free COM(登録不要COM)
レジストリ登録なしに、アプリ側のマニフェストに書いたCLSIDやProgIDなどの情報でCOMコンポーネントを解決する仕組み。
アクティベーション コンテキスト
いま実行中のスレッドがどのassemblyのどのバージョンを使うかを保持する実行時データ構造で、CoCreateInstanceはレジストリより先にここを見る。
アプリケーションマニフェスト(Win32 side-by-side)
実行可能ファイルに埋め込むか同じ場所に置く*.exe.manifestで、依存するside-by-side assemblyやReg-Free COMのcomClass登録を宣言するWin32のマニフェスト。ClickOnceのアプリケーションマニフェストとは別物。
コンポーネント マニフェスト(assembly manifest)
部品側に付けるXMLで、そのassemblyがどのファイルを含み、どのCOMクラスを公開するかを記述する。本来レジストリに入っていた情報がここへ来る。
.NET(Core以降)
.NET Frameworkの後継となる、クロスプラットフォーム対応の.NETランタイム(.NET 5以降)。
COM host(*.comhost.dll)
.NET 5+/.NET 8でCOMコンポーネントを公開する際の入口となるDLLで、EnableComHostingにより生成される。
EnableRegFreeCom
.NET 5+/.NET 8のプロジェクトで、Reg-Free COM用のside-by-sideマニフェストの出力を有効にするMSBuildプロパティ。
Visual Basic 6.0(VB6)
COMコンポーネントを型付きで呼び出せる、レガシーなVisual Basicの開発環境・言語。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。