TypeLoadException с использованием брокерского компонента WinRT
Я создаю приложение для Магазина Windows с использованием брокерского компонента. Компонент брокера предназначен для обеспечения возможности взаимодействия с RFID-считывателем на устройстве. Когда я пытаюсь инициализировать экземпляр класса, предоставляемый брокерским компонентом, я получаю System.TypeLoadException
с сообщением Could not find or load a type. (Exception from HRESULT: 0x80131522).
Я работаю против чистой установки Windows 8.1 Professional на двух разных планшетных устройствах. Оба в настоящее время испытывают эту проблему. Решение работало в прошлом; что-то, что я сделал недавно, должно быть причиной этого. Я также убедился, что к считывателю RFID можно получить доступ с помощью примера приложения, предоставленного поставщиком оборудования.
Мой файл Package.appxmanifest выглядит примерно так:
<Package ...>
...
<Extensions>
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>clrhost.dll</Path>
<ActivatableClass ActivatableClassId="MyApp.RFID.Component.RfidDevice" ThreadingModel="STA">
<ActivatableClassAttribute Name="DesktopApplicationPath" Type="string" Value="C:\Program Files (x86)\MyApp\RFID" />
</ActivatableClass>
</InProcessServer>
</Extension>
</Extensions>
</Package>
Решение строится для платформы x86. Я зарегистрировал свои компоненты на целевом устройстве в C:\Program Files (x86)\MyApp\RFID
используя следующие команды (согласно этому техническому документу):
icacls . /T /grant "ALL APPLICATION PACKAGES":RX
regsvr32 MyApp.RFID.Proxy.dll
Я установил распространяемый пакет Visual Studio 2013 x86 на целевое устройство. Я также поместил дополнительную DLL-библиотеку зависимостей в тот же каталог, как я делал это на протяжении всей моей разработки.
Некоторые другие вещи, которые я пробовал:
- Использование%PROGRAMFILES% вместо
C:\Program Files (x86)
в качестве значения для ActivatableClassAttribute в манифесте. - Использование 'STA', 'MTA' и 'Both' в качестве моделей потоков.
- Добавлена косая черта в путь значения ActivatableClassAttribute.
- Полностью удалил все и попробовал снова с нуля.
- Явно добавьте пустой конструктор по умолчанию в
RfidDevice
учебный класс.