从 Visual Studio 2013 年的 Properties.Resources 获取流
Get Stream from Properties.Resources in Visual Studio 2013
我已经看到很多关于此的帖子,但无法正常工作。我在项目的资源文件夹中添加了一个文件(右键单击项目->属性->资源,然后 select 文件,添加文件)。
我尝试将构建操作设置为资源和嵌入式资源。
我需要使用 StreamReader 读取该文件。
我尝试了以下操作,但无论我将构建操作设置为资源还是嵌入式资源,myStream 的 return 均为 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)
{
...
}
我也试过这个但是它也是 returns 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 的详细回答帮助我解决了这个问题)
将您的 csv 文件作为嵌入资源添加到工作室项目中。
使用 visual studio 项目的默认命名空间作为文件名的前缀。这样"mytestfile.csv"就变成了"ConsoleApp1.mytestfile.csv"。
然后你可以这样阅读内容:
System.IO.Stream myStream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("ConsoleApp1.mytestfile.csv");
我已经看到很多关于此的帖子,但无法正常工作。我在项目的资源文件夹中添加了一个文件(右键单击项目->属性->资源,然后 select 文件,添加文件)。
我尝试将构建操作设置为资源和嵌入式资源。
我需要使用 StreamReader 读取该文件。
我尝试了以下操作,但无论我将构建操作设置为资源还是嵌入式资源,myStream 的 return 均为 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)
{
...
}
我也试过这个但是它也是 returns 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 的详细回答帮助我解决了这个问题)
将您的 csv 文件作为嵌入资源添加到工作室项目中。
使用 visual studio 项目的默认命名空间作为文件名的前缀。这样"mytestfile.csv"就变成了"ConsoleApp1.mytestfile.csv"。 然后你可以这样阅读内容:
System.IO.Stream myStream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("ConsoleApp1.mytestfile.csv");