2017-06-03 4 views
0

J'ai vu beaucoup de messages sur ce sujet et ne pouvait pas obtenir de travail. J'ai ajouté un fichier au dossier Ressources de mon projet (clic droit sur projet-> Propriétés-> Ressources, puis sélectionnez Fichier, Ajouter un fichier).Obtenez Stream à partir de Properties.Resources dans Visual Studio 2013

J'ai essayé de définir l'action de construction sur Ressources et Ressources intégrées.

J'ai besoin de lire ce fichier en utilisant StreamReader.

J'ai essayé suivante, mais à la fois NULL de retour pour MyStream peu importe si je mis bâtir l'action à des ressources ou des ressources intégrées:

// 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) 
    { 
     ... 
    } 

J'ai aussi essayé mais il renvoie également NULL

Stream myStream = Assembly 
    .GetExecutingAssembly() 
    .GetManifestResourceStream(Properties.Resources.mytestfile); //returns NULL 
using (CsvReader csv = new CsvReader(new StreamReader(myStream), true) 
{ 
    ... 
} 

Si je vais regarder rapidement et tapez ce Properties.Resources.mytestfile, j'obtiens la représentation de chaîne de mon dossier.

MISE À JOUR, AU LIEU DE DOSSIER AJOUT DE DROIT CLIQUANT SUR LE PROJET> Propriétés-> RESSOURCES (CETTE FAÇON, IL NE FONCTIONNE PAS), ADDITIONNEZ PAR DROIT CLIQUANT SUR Projet-> Ajouter-> ARTICLE EXISTANT, ALORS SET BUILD ACTION = RESSOURCE INCORPORÉE, CELA FONCTIONNERA. (Merci à Aedvald Tseh pour sa réponse détaillée qui m'a aidé à comprendre cela)

+1

Ce n'est pas un flux, il est incorporé comme une chaîne. Donc, utilisez new StringReader (Properties.Resources.mytestfile) –

+0

Cela ne fonctionne pas. J'ai essayé de définir mytestfile comme BuildAction = Resource et Build Action = Embedded Resource, aucun travail. App crashes, voir aucune erreur – pixel

Répondre

1

Ajoutez votre fichier csv comme ressource intégrée au projet de studio. csv file as embedded resource

préfixer le nom de votre fichier avec espace de noms par défaut de votre projet studio visuel. Ainsi, "mytestfile.csv" est transformé en "ConsoleApp1.mytestfile.csv". Ensuite, vous pouvez lire le contenu comme suit:

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

essayé déjà. Le flux retourné est nul selon la description ci-dessus. J'ai essayé de définir l'action de construction à la fois Embedded Resource et Resource, soit un retourne – pixel

+0

Vous avez raison, cela fonctionne si vous ajoutez le fichier csv au projet comme vous l'avez décrit. Si vous l'ajoutez comme je l'ai décrit, cela ne marchera pas, ce qui est étrange. Très apprécié Aedvald – pixel