C++ Windows 10中的Windows运行时可激活类

C++ Windows 10中的Windows运行时可激活类,c++,windows-runtime,visual-studio-2015,win-universal-app,windows-10,C++,Windows Runtime,Visual Studio 2015,Win Universal App,Windows 10,尝试为WinRT注册可激活类时出错。这是在Windows 10上的Visual Studio 2015的C#universal应用程序(UAP)中 以前,您可以在Package.appxmanifest文件中注册可激活类,如下所示: <Extension Category="windows.activatableClass.inProcessServer"> <InProcessServer> <Path>myCode.dll</

尝试为WinRT注册可激活类时出错。这是在Windows 10上的Visual Studio 2015的C#universal应用程序(UAP)中

以前,您可以在Package.appxmanifest文件中注册可激活类,如下所示:

<Extension Category="windows.activatableClass.inProcessServer">
    <InProcessServer>
        <Path>myCode.dll</Path>
        <ActivatableClass ActivatableClassId="myNS.MyNativeClass" ThreadingModel="both" />
    </InProcessServer>
</Extension>

那么,如何使用UAP项目中的Windows运行时组件呢?未注册它,您会得到一个TypeLoadException。

您将Extensions元素放在哪里,在Application元素还是Package元素中? 若将其放在Application元素中,则会出现此错误。您应该在Package元素中输入

例如:

<?xml version="1.0" encoding="utf-8"?>

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  IgnorableNamespaces="uap mp">
  <Capabilities>
    <Capability Name="internetClient" />
  </Capabilities>
  <Extensions>
    <Extension Category="windows.activatableClass.inProcessServer">
      <InProcessServer>
        <Path>yourdll.dll</Path>
      </InProcessServer>
    </Extension>
  </Extensions>
</Package>

yourdll.dll

>如果C++是C++,为什么你要标记这个问题?您是手动输入而不是让MSBuild自动生成它吗?那你需要出示完整的舱单。抱歉搞混了,波。该应用程序本身就是C#。Windows运行时组件是C++。汉斯,如果我提到这个项目,它也对我有用。我的NuGet包缺少一个步骤。我在appxmanifest中手动进行试验,这是解决问题的一部分。我把完整的文件放在这里。我的扩展名在应用程序部分。这就是造成错误的原因。我不知道文件中有两个扩展元素的位置,并将其错误地放在了那里。谢谢
<?xml version="1.0" encoding="utf-8"?>

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  IgnorableNamespaces="uap mp">
  <Capabilities>
    <Capability Name="internetClient" />
  </Capabilities>
  <Extensions>
    <Extension Category="windows.activatableClass.inProcessServer">
      <InProcessServer>
        <Path>yourdll.dll</Path>
      </InProcessServer>
    </Extension>
  </Extensions>
</Package>