Вопрос по windows-runtime, windows-phone-8, c#, windows-phone, visual-studio-2012 – WP Runtime Component - Тип загрузки исключение?

3
Что работает> Настройка библиотеки

У меня есть решение для Windows Phone 8 с 2 проектами:

«Привет», простой проект библиотеки -> генерируетHello.dll.«HelloNativeRT», компонент времени выполнения WP с файлами C ++ -> создаетHelloNativeRT.dll а такжеHelloNativeRT.winmd

В этом решении библиотека «Hello» ссылается на WP Runtime Component, поэтому вызовы типа ...

HelloNativeRT.SampleNamespace test = new HelloNativeRT.SampleNamespace();

... отлично работает в этом проекте библиотеки.

Что не работает> Настройка приложения WP8

Тем не мение,Я хочу использовать эти две библиотеки в приложении Windows Phone 8, нобез добавления ссылок на проекты, так как мне нужно отправить скомпилированные библиотеки клиентам.

Я ссылался наHello.dll файл в проекте, а такжеHelloNativeRT.winmd файл.Когда я запускаю приложение в режиме отладки и перехожу на линиюHelloNativeRT.SampleNamespace test = new HelloNative... он вылетает и говорит «TypeLoadException», как будто он не может загрузить собственный модуль.

Я полагаю, мне нужно включитьHelloNativeRT.dll файл так или иначе, так как я предполагаю, что он содержит нативный (скомпилированный) код, поскольку файл winmd может встраивать только код C ++ / CX.

Как мне настроить мой проект, чтобы включить эту DLL?

Я попытался поместить его в корень проекта WP8, сослаться на него, вставить его ... безуспешно.

Ваш Ответ

2   ответа
4

файл .winmd и файл .dll, сгенерированный из компонента WinRT, должны иметьЖЕ ИМЯ (например, testRT.dll и testRT.winmd).

Затем:

Добавьте файл медитации .winmd в качестве ссылки в ваш проект.Убедитесь, что файлы .winmd / dll находятся в одной папке для правильной загрузки.
3

Добавитьссылка в ваш управляемый файл DLL (оболочка),Добавитьссылка в ваш файл метаданных winmd (компонент WinPRT),Добавьте свой собственный файл библиотеки DLL в видеучастник вашего проекта, с постройкой "содержание" а также "Копировать всегда"выбрано.Добавитьраздел вашего файла манифеста:

WPAppManifest:

<ActivatableClasses>
    <InProcessServer>
        <Path>external_component.dll</Path>
        <ActivatableClass ActivatableClassId="external_component.MyComponent" ThreadingModel="both" />
    </InProcessServer>
</ActivatableClasses>

Это последний момент, который автоматически выполняется Visual Studio, когда вы ссылаетесь на проект WinPRT из проекта WP8 ;-) Я полагаю, что не многие люди ссылаются на нативные библиотеки вручную, поскольку документация по этому вопросу очень скудна. , Единственная ссылка, где я видел упомянутое решение, былаВот...

Похожие вопросы