1

ずっと悩んでいたことを、少しでも明確にしたい。

ランタイム コンポーネントの IDL ファイルとメタデータ ファイルの生成に関するドキュメント (ファースト パーティとサード パーティの両方) をできるだけ多く読もうとしました。 (非常に)失われました。

私の理解が正しければ、ランタイム コンポーネントが DLL にコンパイルされると、それを使用して IDL ファイルが生成され、Windows メタ データ ファイルの作成に使用されます。MS サンプル アプリ Chatterbox VoIP では、ランタイム コンポーネント プロジェクトに、次のことを行うカスタム ビルド ステップ (PostBuildEvent) があります。

pushd "$(OutDir)"

WinMdIdl.exe "$(OutDir)$(RootNamespace).winmd"

MIdl.exe /env $(MidlEnv) /winrt /ns_prefix /metadata_dir "$(FrameworkSdkDir)Windows Metadata" /out "$(SolutionDir)$(ProjectName)ProxyStub" "$(OutDir)$(RootNamespace).idl"

MIdl.exe /env $(MidlEnv) /winrt /ns_prefix /metadata_dir "$(FrameworkSdkDir)Windows Metadata" /out "$(SolutionDir)$(ProjectName)ProxyStub" "$(OutDir)$(RootNamespace).OutOfProcess.idl"

"$(ProjectDir)OopServerRegistrationHelper.exe" /winmd:"$(OutDir)$(RootNamespace).winmd" /dll_name:$(TargetName) /namespace:$(RootNamespace).OutOfProcess /app_manifest:"$(SolutionDir)UI\Properties\WMAppManifest.xml" /helper_dir:"$(SolutionDir)Agents"

popd

ただし、私自身のプロジェクトでは、C# アプリで参照されるランタイム コンポーネントで単純な C++ クラスを使用して、IDL ファイルの作成/処理を手動で構成したことはありません。C# プロジェクトの参照を C++/CX ランタイム プロジェクトに追加し、コンパイルしただけで機能しました。

それで、ここでの取引は何ですか?IDL ファイルと WinMD ファイルは、ランタイム コンポーネント プロジェクトごとに自動的に生成されますか? それとも、これらの IDL 処理ツールを使用しないことで、間違った/非効率的なことを行っているのでしょうか?

さらに情報を含める必要がある場合はお知らせください。

4

0 に答える 0