2013-06-11 8 views
3

Dans un projet d'application Windows Store Je lisais un fichier comme ceci:Lire un fichier dans la bibliothèque de classe WinRT

var uri = new Uri("ms-appx:///DataModel/Accounts.csv"); 
var file = await StorageFile.GetFileFromApplicationUriAsync(uri); 

var read = await FileIO.ReadTextAsync(file); 

Le fichier Accounts.csv a été ajouté à l'action de construction content.

J'ai maintenant déplacé le code dans une bibliothèque de classes séparée. Le fichier est toujours ajouté avec la commande Action content.

Mais le système uri ne semble plus fonctionner.

J'ai aussi essayé:

var file = await StorageFile.GetFileFromPathAsync("/DataModel/Accounts.csv"); 
var read = await FileIO.ReadTextAsync(file); 

Comment puis-je accéder à un fichier dans une bibliothèque de classes WinRT? La bibliothèque de fichiers se comporte-t-elle différemment du projet d'application Store?

Répondre

4

Vous pouvez accéder au fichier dans la bibliothèque de classes Windows Store comme ceci.

var _Assembly = Assembly.Load(new AssemblyName("ASSEMBLY_NAME")); 
var _Stream = _Assembly.GetManifestResourceStream("YOUR_FILE_NAME_WITH_PATH.xml"); 

S'il vous plaît noter dans les membres de chemin de bibliothèque de classe sont séparés par . non par \

Pour obtenir tous les noms de ressources

var names = _Assembly.GetManifestResourceNames(); 

La méthode GetManifestResourceStream sera retourne toujours NULL si la ressource built action propriété n'est pas réglé sur embedded resource

+0

Comme vous le dites correctement votre solution fonctionne dans le cas où l'action de construction est définie sur 'ressource incorporée'. mais j'ai défini l'action de construction sur 'content'. – Marius

+0

Mais l'action de construction 'content' ne fonctionnera pas, vous devez utiliser' embedded resource' s'il s'agit d'une bibliothèque de classes. – Xyroid

+0

S'agit-il d'une nouvelle limitation avec WindowsRT? Dans .Net, il était possible d'ajouter des fichiers aux bibliothèques de classes avec 'content build action' et' copy if newer'. Dans l'assemblage, vous pouvez simplement écrire 'var text = File.ReadAllText (" TextFile1.txt ")' pour accéder au fichier. – Marius

Questions connexes