在UWP应用程序中拼写库(如hunspell)?

Jer*_*rry 5 c# hunspell nhunspell win-universal-app

我正在为UWP platorm移植一个写作者的申请.我剩下的唯一一块拼图是NHunspell图书馆.我广泛使用它进行拼写检查和同义词库功能.我已经定制了它,并为各种事物创建了自定义词典(即每个写作项目的不同字典).这个图书馆很棒.

但是,我似乎无法在我的UWP应用程序中包含此DLL.

1)有没有办法强制使用这个DLL?我真的很喜欢NHunSpell系统的设置方式.它具有常识,并且非常快速且易于使用.

2)如果没有,任何人都可以为自定义词典,自定义拼写检查等推荐更好的解决方案吗?

更新3

经过大量更新和在线阅读后,我找到了一个讨论拼写检查理论的链接.这是一个简单的例子(我最常用的一个).

http://www.anotherchris.net/csharp/how-to-write-a-spelling-corrector-in-csharp/

阅读完这篇文章,获取该基本代码,并从Hunspell .dic文件中删除英文单词后,我创建了自己的拼写检查库,该库在UWP中有效.

一旦我得到巩固,我会将其作为下面的答案发布,以捐赠给SO社区.:)

更新2

我承认使用了Hunspell.它看起来根本不可能......有没有其他人可以建议的库/包?

更新:

我可能需要重新说明我不能包含DLL的语句:我不能通过NuGet包含DLL.它抱怨DLL与UAP/UWP平台不兼容.

我能够通过链接到现有的DLL(而不是NuGet)手动将DLL包含在我的项目中.但是,该DLL确实证明与UAP平台不兼容.一个简单的拼写检查单词在WinForms中运行正常,但会立即崩溃System.IO.FileNotFoundException.

NHunspell的构造函数伸手加载关联.dic.aff文件.但是,我通过将文件加载到内存中然后调用备用构造函数来缓解这种情况,该构造函数为每个文件采用字节数组而不是文件名.它仍然崩溃,但有一个新的Method not found错误:

String System.AppDomain.get_RelativeSearchPath()

我正在寻找任何可在UAP框架内工作的拼写检查引擎.我希望它只是出于熟悉的原因而成为NHunspell.但是,我并不是因为这种情况越来越不可能作为一种选择.

与我合作的人建议我使用内置的拼写检查选项.但是,我无法使用内置的Windows 10/TextBox拼写检查功能(我知道),因为我无法控制自定义词典,我无法禁用自动大写和单词替换等功能(其中)如果它认为它足够接近正确的猜测,它会替换你的话.对于作家来说,那些东西是章节自杀!作者可以在操作系统级别关闭它们,但是他们可能希望将它们用于其他应用程序,而不是这个.

如果有NHunspell的解决方法,请告诉我.如果您不知道解决方法,请告诉我您在UAP框架内工作的最佳替换自定义拼写检查引擎.

作为旁注,我也使用NHunspell作为其词库功能.它在我的Windows应用程序中运行良好.我也必须更换这个功能 - 希望使用与拼写检查引擎相同的引擎.但是,如果你知道一个好的同义词引擎(但它没有拼写检查),那也很好!

谢谢!!

gan*_*o55 3

我下载了 NHunspell 库的源代码,并尝试构建一个支持 UWP 的库,但是我发现了 Marshalling ( Marshalling.cs )的问题
。该包加载仅在 x86 和 x64 架构中工作的 dll,因此在arm(手机、平板电脑)该应用程序将无法运行。
该包通过系统调用加载 dll:

    [DllImport("kernel32.dll")]
    internal static extern IntPtr LoadLibrary(string fileName);
Run Code Online (Sandbox Code Playgroud)

我认为它需要重写才能在 UWP 中工作,因为 UWP 使用沙箱。

恕我直言,只有两个选择:
1)根据 UWP 的限制重写 Marshalling 类。
2) 不要在程序中使用 Hunspell。

我对 UWP 的 dll 没有太多了解,但我相信重写可能会非常困难。