C# 在独立词典应用程序中包括大型单词列表

C# 在独立词典应用程序中包括大型单词列表,c#,dictionary,compression,portability,C#,Dictionary,Compression,Portability,应用程序 我正在开发一个简单的字典搜索工具,主要目的是搜索大约180000个单词的单词列表 首先,单词列表是一个纯文本文档,每个单词都在一行上。加载后,单词列表被处理成一个简单的数组进行搜索 目标 然而,我的目标是将应用程序作为单个可移植的可执行文件分发,因此我必须以某种方式将单词列表打包到应用程序中 我的尝试 在第一次尝试时,我只是自动生成了一个数组定义,并将其包含在项目中(因此,我没有加载文件并创建数组,而是在项目中创建了一个文本数组),它看起来有点像这样: // Auto-generate

应用程序
我正在开发一个简单的字典搜索工具,主要目的是搜索大约180000个单词的单词列表

首先,单词列表是一个纯文本文档,每个单词都在一行上。加载后,单词列表被处理成一个简单的数组进行搜索

目标
然而,我的目标是将应用程序作为单个可移植的可执行文件分发,因此我必须以某种方式将单词列表打包到应用程序中

我的尝试
在第一次尝试时,我只是自动生成了一个数组定义,并将其包含在项目中(因此,我没有加载文件并创建数组,而是在项目中创建了一个文本数组),它看起来有点像这样:

// Auto-generated word-list
public string[] WordList = new string[178691];

WordList[0] = "AA";
WordList[1] = "AAH";
// ...
WordList[115383] = "PHOTONEGATIVE";
WordList[115384] = "PHOTONIC";
WordList[115385] = "PHOTONICS";
WordList[115386] = "PHOTONS";
WordList[115387] = "PHOTONUCLEAR";
WordList[115388] = "PHOTOOXIDATION";
WordList[115389] = "PHOTOOXIDATIONS";
WordList[115390] = "PHOTOOXIDATIVE";
WordList[115391] = "PHOTOOXIDIZE";
WordList[115392] = "PHOTOOXIDIZED";
WordList[115393] = "PHOTOOXIDIZES";
WordList[115394] = "PHOTOOXIDIZING";
WordList[115395] = "PHOTOPERIOD";
// etc...
这实现了完全可移植的目标,并且整个项目的文件大小保持不变

但是,以这种方式处理它确实会改变一件事,那就是构建和运行时间的增加,这可能被认为是一个小的、不可避免的问题,但理想情况下应该缩短

问题

有没有办法将一个大的(~180000字)字典组合成一个可移植/独立的应用程序,可能使用某种压缩技术来降低文件大小,但最终要保持一个合理的加载时间,这比简单的预定义的,文字数组?

您应该考虑将文件作为嵌入式资源添加到.NET程序集中。然后可以在运行时从程序集中读取值。您还可以使用DeflateStream(请参阅)以某种方式在程序集中对其进行压缩

您应该考虑将文件作为嵌入式资源添加到.NET程序集中。然后可以在运行时从程序集中读取值。您还可以使用DeflateStream(请参阅)以某种方式在程序集中对其进行压缩

好极了。此解决方案减小了文件大小、缩短了构建时间并缩短了运行时间。这正是我们所需要的。谢谢,太好了。此解决方案减小了文件大小、缩短了构建时间并缩短了运行时间。这正是我们所需要的。非常感谢。