【发布时间】:2017-06-03 00:04:24
【问题描述】:
我在外面看到了很多关于这个的帖子,但都找不到工作。我在项目的 Resources 文件夹中添加了一个文件(右键单击 project->Properties->Resources,然后选择 File,Add File)。
我尝试将 Build Action 设置为 Resources 和 Embedded Resources。
我需要使用 StreamReader 读取该文件。
我尝试了以下操作,但无论我将构建操作设置为资源还是嵌入式资源,都为 myStream 返回 NULL:
// IF I ADD FILE AS SUGGESTED BELOW IN UPDATE, THIS WILL WORK; OTHERWISE, I GET NULL
Stream myStream = Assembly
.GetExecutingAssembly()
.GetManifestResourceStream("MyProject.General.Tests.mytestfile.csv"); //returns NULL
using (CsvReader csv = new CsvReader(new StreamReader(myStream), true)
{
...
}
我也试过这个,但它也返回 NULL
Stream myStream = Assembly
.GetExecutingAssembly()
.GetManifestResourceStream(Properties.Resources.mytestfile); //returns NULL
using (CsvReader csv = new CsvReader(new StreamReader(myStream), true)
{
...
}
如果我快速观看并键入此 Properties.Resources.mytestfile,我确实会得到我的文件的字符串表示形式。
更新,而不是通过右键单击项目->属性->资源添加文件(这样,它将不起作用),通过右键单击项目->添加->添加它现有项目,然后设置构建操作=嵌入式资源,它将起作用。 (感谢 Aedvald Tseh 的详细回答帮助我解决了这个问题)
【问题讨论】:
-
它不是流,它是作为字符串嵌入的。所以使用 new StringReader(Properties.Resources.mytestfile)
-
那行不通。我尝试将 mytestfile 设置为 BuildAction=Resource 和 Build Action = Embedded Resource,没有工作。应用崩溃,看不到错误
标签: c# csv stream resources streamreader