Как ссылаться на собственный компонент WinRT из управляемого проекта? - PullRequest
10 голосов
/ 21 сентября 2011

Говорят, что вы можете создать компонент C ++ WinRT, который вы можете использовать в C #.У меня есть простой тестовый проект - приложение на C # XAML и проект на C ++, использующий только базовый шаблон проекта компонента WinRT.Когда я пытаюсь добавить ссылку на проект в проект C # XAML, он говорит, что не может добавить ссылку (не знаю почему).Я могу создать собственный компонент WinRT, сгенерировать файл .winmd и добавить ссылку на этот файл .winmd вручную, используя кнопку обзора в диалоговом окне добавления ссылок.Это позволяет мне получить доступ к методам в собственной библиотеке, но когда я собираю, он говорит, что использует Platform.IDisposable, но этот тип определен в сборке, на которую нет ссылок.Я не видел ни одной из сессий, демонстрирующих этот сценарий.

Ответы [ 3 ]

8 голосов
/ 21 сентября 2011

Нашел ответ!Похоже, это сбой, но у него есть обходной путь: http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/1900bd21-8693-4127-800a-f35cfd5daac2

По сути, сначала вы очищаете проект компонента WinRT, затем добавляете ссылку, а затем добавляете ссылку вручную в platform.winmd, расположенный в\ VC \ bin, тогда ты должен идти.

2 голосов
/ 25 сентября 2011

Так что я столкнулся с похожими проблемами, после добавления ссылки на Microsoft.VCLibs я не смог развернуть.Однако я заметил, что по умолчанию компонент WinRT скомпилирован в код x86, тогда как приложение в стиле C # Metro предназначено для ЛЮБОГО ЦП, и это было основной причиной в моем случае.Переключение приложения C # на x86 решило проблему.

2 голосов
/ 21 сентября 2011

В сборке C ++ WinRT, на которую вы ссылаетесь, вероятно, используются объекты, реализующие интерфейс IDisposable, поэтому вам также необходимо сослаться на сборку C ++, содержащую интерфейс.

...