2017-06-03 92 views
0

我已經看到很多關於此的帖子,並且無法繼續工作。我在項目的Resources文件夾中添加了一個文件(右鍵單擊project-> Properties-> Resources,然後選擇File,Add File)。從Visual Studio 2013中的Properties.Resources獲取流

我試着將Build Action設置爲資源和嵌入式資源。

我需要使用StreamReader讀取該文件。

我曾嘗試以下,但都返回NULL爲myStream不管我設置生成操作到資源或嵌入的資源:

// 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,我確實得到了我的文件的字符串表示。

UPDATE代替添加文件通過右鍵點擊項目 - >屬性 - >資源(這樣,它不會工作),添加它通過右鍵點擊項目 - > ADD->現有的項目,然後SET BUILD ACTION = EMBEDDED RESOURCE,它將起作用。 (感謝Aedvald Tseh的詳細回答,幫助我瞭解了這一點)

+1

這是不是甲流,它嵌入一個字符串。所以使用新的StringReader(Properties.Resources.mytestfile) –

+0

這是行不通的。我嘗試將mytestfile設置爲BuildAction = Resource和Build Action = Embedded Resource,但都不起作用。應用程序崩潰,看到沒有錯誤 – pixel

回答

1

將您的csv文件作爲嵌入資源添加到studio項目中。 csv file as embedded resource

在Visual Studio項目的默認命名空間前綴文件的名稱。因此「mytestfile.csv」變成了「ConsoleApp1.mytestfile.csv」。 然後你可以閱讀的內容,像這樣:

System.IO.Stream myStream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("ConsoleApp1.mytestfile.csv"); 
+0

已經試過了。根據以上描述返回的流爲空。我試着將Build Action設置爲Embedded Resource和Resource,任何一個都返回null – pixel

+0

你是對的,如果你按照你的描述將csv文件添加到項目中,它就可以工作。如果按照我描述的方式添加它,它將不起作用,這很奇怪。非常感謝Aedvald – pixel