读取嵌入的文本文件
我已经创建了一个完美的项目。 我的问题涉及安装项目。 当我在另一台计算机上使用它时,即使它们在部署期间位于资源文件夹内,也无法找到该文本文件!
在另一台计算机上安装软件后,如何确保我的程序能够找到这些文本文件!
我一直在寻找这个解决方案但是徒劳无功。 请帮我解决这个问题。 如果我能得到一个完整的代码,我将非常高兴!
首先将文本文件的构建操作设置为“EmbeddedResource”。
然后阅读代码中的文件:
var assembly = Assembly.GetExecutingAssembly(); var resourceName = "AssemblyName.MyFile.txt"; using (Stream stream = assembly.GetManifestResourceStream(resourceName)) { using (StreamReader reader = new StreamReader(stream)) { string result = reader.ReadToEnd(); } }
如果您无法找出嵌入式资源的名称,请执行此操作以查找名称,并且您的文件应该是明显的:
assembly.GetManifestResourceNames();
这假设您希望将文本文件嵌入到程序集中。 如果没有,那么您可能只想更改安装项目以在安装期间包含文本文件。
假设您的意思是项目中有一个您已设置为EmbeddedResource的文件,则需要
using (var stream = Assembly.GetExecutingAssembly() .GetManifestResourceStream(path)) { ... }
其中path
应为程序集名称,后跟项目文件夹层次结构中文件的相对路径。 使用的分隔符是句点.
。
因此,如果您有一个名为MyCompany.MyProject
的程序集,然后在该项目中有一个包含Image.jpg
的文件夹Test
,您将使用路径MyCompany.MyProject.Test.Image.jpg
来获取它的Stream
。
创建此函数以读取您拥有的任何嵌入式资源文本文件:
public string GetFromResources(string resourceName) { Assembly assem = this.GetType().Assembly; using (Stream stream = assem.GetManifestResourceStream(resourceName)) { using (var reader = new StreamReader(stream)) { return reader.ReadToEnd(); } } }