我正在将一款面向作家的应用程序移植到UWP平台。唯一剩下的问题是NHunspell库。我广泛使用它进行拼写检查和同义词功能,并对其进行了大量定制,为各种事情创建了自定义字典(即每个写作项目都有一个不同的字典)。这个库非常好用。
然而,我似乎无法在我的UWP应用程序中包含这个DLL。
1)是否有办法强制使用此DLL?我真的很喜欢NHunSpell系统的设置方式。它很合理,而且非常快捷易用。
2)如果不能,有没有人可以推荐更好的解决方案,以实现自定义字典、定制拼写检查等功能?
更新3
经过大量的更新和在线阅读,我找到了一篇讨论拼写检查理论的链接。这里是一个快速示例(我使用最多的一个)。
更新2
我放弃使用Hunspell,看起来根本不可能……有其他的库/软件包可以建议吗?
更新:
我可能需要重新表述一下我无法包含DLL的声明:我无法通过NuGet包含DLL。它抱怨该DLL与UAP/UWP平台不兼容。
我能够手动将DLL包含到我的项目中,通过链接到现有的DLL(而不是NuGet)。但是,该DLL确实证明与UAP平台不兼容。在WinForms中简单调用拼写检查一个单词可以正常工作,但立即崩溃并显示“System.IO.FileNotFoundException”。
NHunspell的构造函数确实需要加载相关的.dic和.aff文件。但是,我通过将文件加载到内存中,然后调用替代构造函数来缓解这个问题,该构造函数使用字节数组而不是文件名作为这些文件的参数。它仍然会崩溃,但是会出现一个新的“方法未找到”错误:
我正在寻找任何可以在UAP框架内使用的拼写检查引擎。出于熟悉原因,我更喜欢NHunspell。然而,我也意识到这越来越不可能成为一个选项。
我与之合作的人建议我使用内置的拼写检查选项。然而,我不能使用内置的Windows 10/TextBox拼写检查功能(据我所知),因为我无法控制自定义词典,也无法禁用自动大写和单词替换(如果它认为它已经足够接近正确的猜测,它就会替换掉你的单词)。对于作家来说,这些东西是灾难性的!作家可以在操作系统级别关闭它们,但他们可能希望在其他应用程序中打开它们,只是不想在这个应用程序中打开。
请告诉我是否有NHunspell的解决方法。如果您不知道解决方法,请让我知道在UAP框架内最好的替代自定义拼写检查引擎。
另外,我还使用NHunspell进行同义词功能。它在我的Windows应用程序中运行得非常好。我也需要替换这个功能 - 希望能够使用与拼写检查引擎相同的引擎。但是,如果您知道一个很好的同义词引擎(但不进行拼写检查),那也很好!
谢谢!
然而,我似乎无法在我的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包含到我的项目中,通过链接到现有的DLL(而不是NuGet)。但是,该DLL确实证明与UAP平台不兼容。在WinForms中简单调用拼写检查一个单词可以正常工作,但立即崩溃并显示“System.IO.FileNotFoundException”。
NHunspell的构造函数确实需要加载相关的.dic和.aff文件。但是,我通过将文件加载到内存中,然后调用替代构造函数来缓解这个问题,该构造函数使用字节数组而不是文件名作为这些文件的参数。它仍然会崩溃,但是会出现一个新的“方法未找到”错误:
String System.AppDomain.get_RelativeSearchPath()
。我正在寻找任何可以在UAP框架内使用的拼写检查引擎。出于熟悉原因,我更喜欢NHunspell。然而,我也意识到这越来越不可能成为一个选项。
我与之合作的人建议我使用内置的拼写检查选项。然而,我不能使用内置的Windows 10/TextBox拼写检查功能(据我所知),因为我无法控制自定义词典,也无法禁用自动大写和单词替换(如果它认为它已经足够接近正确的猜测,它就会替换掉你的单词)。对于作家来说,这些东西是灾难性的!作家可以在操作系统级别关闭它们,但他们可能希望在其他应用程序中打开它们,只是不想在这个应用程序中打开。
请告诉我是否有NHunspell的解决方法。如果您不知道解决方法,请让我知道在UAP框架内最好的替代自定义拼写检查引擎。
另外,我还使用NHunspell进行同义词功能。它在我的Windows应用程序中运行得非常好。我也需要替换这个功能 - 希望能够使用与拼写检查引擎相同的引擎。但是,如果您知道一个很好的同义词引擎(但不进行拼写检查),那也很好!
谢谢!