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应用程序中运行良好.我也必须更换这个功能 - 希望使用与拼写检查引擎相同的引擎.但是,如果你知道一个好的同义词引擎(但它没有拼写检查),那也很好!
谢谢!!
我下载了 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 没有太多了解,但我相信重写可能会非常困难。