WPF应用程序包含WinAPI(Win8)组件

时间:2013-11-20 18:07:11

标签: c# wpf windows winapi windows-8.1

我有一个使用手写控件的WPF应用程序。

使用

<InkCanvas></InkCanvas>

在我的XAML中,我能够获取用户的笔画,并使用InkAnalysis类将它们转换为文本。但是,这严格来说是32位,我的要求是64位版本。

无法找到64位兼容的库,我研究升级到.NET 4.5并使用桌面应用程序可用的Windows8类(同时添加     &LT; TargetPlatformVersion&GT; 8.1&LT; / TargetPlatformVersion&GT;到csproj文件,以便我可以添加'Windows'命名空间引用)。幸运的是,Windows.UI.Input.Inking是。

但是,当我添加对Windows.UI.Input.Inking的引用时,我收到一个构建错误,指出:

Unknown build error, 'Cannot resolve dependency to Windows Runtime type 'Windows.Foundation.Metadata.PlatformAttribute'. When using the ReflectionOnly APIs, dependent Windows Runtime assemblies must be resolved on demand through the ReflectionOnlyNamespaceResolve event.'

我已经查看了:

Windows.Foundation.Metadata.PlatformAttribute

它似乎想要一个枚举成员,或者:

Windows.Foundation.Metadata.Platform.Windows

Windows.Foundation.Metadata.Platform.WindowsPhone

这是一个桌面应用程序,所以我显然会选择目标Platform.Windows,但无法弄清楚如何告诉编译器。

如何将此Windows.UI.Input.Inking类合并到我的WPF应用程序中?我的最终目标是在64位环境中将笔画从墨迹转换为文本。

1 个答案:

答案 0 :(得分:2)

我发现由于引用添加到:

,我收到此错误

Windows.UI.Input.Inking

库。似乎添加对Windows 8 / 8.1 WinAPI组件(来自非WinAPI应用程序)的引用的正确方法如下:

  1. <TargetPlatformVersion>8.1</TargetPlatformVersion>添加到csproj文件
  2. 添加对Windows库的引用(这是关键 - 添加特定的lib,在本例中为Windows.UI.Input.Inking,导致构建错误)
  3. 在需要API的实际文件中添加更具体的(例如:Windows.UI.Input.Inking)引用
  4. 我正在创建一个NuGet包,它将编辑csproj文件,并添加Windows引用。如果/何时完成,我会更新。