Создание файлов IDL и WinMD для компонентов времени выполнения на WP8
Я хотел бы получить некоторые разъяснения по поводу того, с чем я некоторое время путался.
Я пытался прочитать как можно больше документации (как 1-й, так и 3-й стороны) о создании файлов IDL и MetaData для компонентов времени выполнения, и, возможно, это связано с моей способностью понимать материал, но я все еще немного (очень) потерян.
Если я правильно понимаю, однажды компонент времени выполнения скомпилирован в 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++ в компоненте Runtime, указанном в приложении C#, я никогда не выполнял никакой ручной настройки для создания / обработки файлов IDL. Я просто добавил ссылку в проекте C# в мой C++/CX Runtime Project, скомпилировал, и это сработало.
Итак, в чем здесь дело? Файлы IDL и WinMD генерируются автоматически для каждого проекта компонента времени выполнения? Или я делаю что-то неправильно / неэффективно, не используя эти инструменты обработки IDL?
Дайте мне знать, если мне нужно добавить больше информации.