Windows 运行时可激活 class 在 Windows 10
Windows Runtime activatable class in Windows 10
我在尝试为 WinRT 注册可激活 class 时遇到错误。这是在 Visual Studio 2015 年 Windows 10.
的 C# 通用应用程序 (UAP) 中
以前,您可以像这样在 Package.appxmanifest 文件中注册可激活的 classes:
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>myCode.dll</Path>
<ActivatableClass ActivatableClassId="myNS.MyNativeClass" ThreadingModel="both" />
</InProcessServer>
</Extension>
但是Visual Studio不喜欢这样。它违反了 UAP 项目的 appxmanifest 文件的架构:
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:\Users3\Documents\GitHubVisualStudio\MyProj\MyProj\bin\x86\Debug\AppxManifest.xml
那么如何使用 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>
我在尝试为 WinRT 注册可激活 class 时遇到错误。这是在 Visual Studio 2015 年 Windows 10.
的 C# 通用应用程序 (UAP) 中以前,您可以像这样在 Package.appxmanifest 文件中注册可激活的 classes:
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>myCode.dll</Path>
<ActivatableClass ActivatableClassId="myNS.MyNativeClass" ThreadingModel="both" />
</InProcessServer>
</Extension>
但是Visual Studio不喜欢这样。它违反了 UAP 项目的 appxmanifest 文件的架构:
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:\Users3\Documents\GitHubVisualStudio\MyProj\MyProj\bin\x86\Debug\AppxManifest.xml
那么如何使用 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>