Было сказано, что вы можете создать компонент С++ WinRT, который вы можете использовать на С#. У меня есть простой тестовый проект - приложение С# XAML и проект на С++, используя только базовый шаблон проекта WinRT Component. Когда я пытаюсь добавить ссылку на проект в проекте С# XAML, он говорит, что не может добавить ссылку (не уверен, почему). Я могу создать собственный компонент WinRT и создать файл .winmd, и я могу добавить ссылку на этот файл .winmd вручную, используя кнопку обзора в диалоговом окне добавления ссылок. Это позволяет мне получить доступ к методам в собственной библиотеке, но когда я создаю, он говорит, что использует Platform.IDisposable, но этот тип определен в сборке, на которую не ссылаются. Я не видел ни одной из сессий, демонстрирующих этот сценарий.
Как ссылаться на собственный компонент WinRT из управляемого проекта?
Ответ 1
Нашел ответ! Похоже, это глюк, но у него есть обход: http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/1900bd21-8693-4127-800a-f35cfd5daac2
В основном, сначала вы очищаете проект компонента WinRT, затем добавляете ссылку, затем добавляете ссылку вручную на платформу .winmd, расположенную в \VC\bin, тогда вам должно быть хорошо идти.
Ответ 2
Узел С++ WinRT, на который вы ссылаетесь, вероятно, использует объекты, реализующие интерфейс IDisposable, поэтому вам также нужно ссылаться на сборку С++, содержащую интерфейс.
Ответ 3
Итак, я столкнулся с подобными проблемами, после добавления ссылки на Microsoft.VCLibs я не смог развернуть. Однако я заметил, что по умолчанию компонент WinRT скомпилирован в код x86, тогда как приложение стиля С# Metro предназначено для любого процессора, и это было основной причиной в моем случае. Переключение приложения С# на x86 разрешило проблему.