我正在使用代理组件构建 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 Redistributable Package。我还在同一目录中放置了一个额外的依赖项 .dll,就像我在所有开发过程中所做的那样。
我尝试过的其他一些事情:
- 使用 %PROGRAMFILES% 而不是
C:\Program Files (x86)
作为清单中 ActivatableClassAttribute 的值。 - 使用“STA”、“MTA”和“Both”作为线程模型。
- 在 ActivatableClassAttribute 值路径中添加了尾部斜杠。
- 完全卸载所有内容并从头开始重试。
- 向类显式添加一个空的默认构造函数
RfidDevice
。