У меня есть библиотека под названием foo, написанная на C ++ / CX. Я выбрал компонент среды выполнения Windows, потому что хочу, чтобы он проецировался на C #, C ++ и JavaScript. Кроме того, я хочу иметь возможность распространять библиотеку, и я не хочу требовать / разрешать потребителю загружать мой проект вместе с исходными файлами в том же решении, что и их проект.

Инструкции в MSDN только демонстрируют, как включить проект компонента среды выполнения Windows в решение с использованием проекта C #. Я знаю, что есть способ распространять только двоичный файл, но не знаю, как это сделать.

Этот вопрос задавали тысячу раз, но ответ всегда - два проекта в одном решении, неполный или обходной путь.

Я использую Visual Studio 2013.4 в Windows 8.1.

1
Zak 24 Фев 2015 в 09:47

2 ответа

Лучший ответ

Я исследовал и нашел ответ ... Это плохо документировано, это не интуитивно понятно, но стоит проблем, когда вы видите, насколько хорошо работает компонент среды выполнения Windows.

Компиляция библиотеки C ++ / CX:

Убедитесь, что вы скомпилировали библиотеку для всех перестановок Debug и Release в Win32, ARM, x86 и x64.

Инструкции по использованию на C #:

Щелкните правой кнопкой мыши ссылку в обозревателе решений и добавьте ссылку на пакет среды выполнения Microsoft Visual C ++ v12.0. Затем добавьте ссылку на созданный вами двоичный файл с соответствующей конфигурацией для вашего проекта (например, Debug / ARM). Этот шаг сложен, потому что фильтр файлов запрашивает у вас .dll, но вам нужно установить фильтр на *.* и выбрать файл .winmd. Затем вы выгружаете проект и находите тег <Reference> для только что добавленной библиотеки. <Reference> будет иметь тег <HintPath> под ним, а в разделе <Reference> вам также потребуется добавить <IsWinMDFile>true</IsWinMDFile> и пару тегов <Implementation>, загруженную с именем .dll, который находился в той же папке, что и файл .winmd.

Для получения более подробных инструкций и информации я настоятельно рекомендую посетить Блог Майка Тэлти

0
Zak 24 Фев 2015 в 15:59

Один из способов сделать это - создать пакет VSIX вашего компонента. См. Пошаговое руководство: создание SDK с использованием C ++, в котором показано, как именно это сделать. с компонентом WinRT, используемым проектом C #.

3
Peter Torr - MSFT 24 Фев 2015 в 16:28