Я получаю сообщение об ошибке при попытке зарегистрировать активируемый класс для WinRT. Это в универсальном приложении C # (UAP) в Visual Studio 2015, в Windows 10.
Ранее вы могли зарегистрировать активируемые классы в вашем файле Package.appxmanifest следующим образом:
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>myCode.dll</Path>
<ActivatableClass ActivatableClassId="myNS.MyNativeClass" ThreadingModel="both" />
</InProcessServer>
</Extension>
Но Visual Studio это не нравится. Это нарушает схему файла appxmanifest проекта UAP:
Validation error. error C00CE169: App manifest validation error: The app manifest must be valid as per schema: Line 42, Column 20, Reason: 'windows.activatableClass.inProcessServer' violates enumeration constraint of 'windows.backgroundTasks windows.preInstalledConfigTask windows.updateTask windows.restrictedLaunch'. The attribute 'Category' with value 'windows.activatableClass.inProcessServer' failed to parse. TextSecure C:\Users\123\Documents\GitHubVisualStudio\MyProj\MyProj\bin\x86\Debug\AppxManifest.xml
Итак, как вы используете компоненты среды выполнения Windows из проекта UAP? Не регистрируя его, вы получаете исключение TypeLoadException.
Где вы разместили элемент Extensions, в элементе Application или Package Element?
Если вы поместите его в элемент 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>