使用WinRT Brokered Component

时间:2016-06-09 22:19:38

标签: c# windows-runtime windows-store-apps winrt-component

我正在使用brokered component构建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下的目标设备上注册了我的组件(按照此whitepaper):

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类添加一个空的默认构造函数。

0 个答案:

没有答案