Ressource à partir d'un assemblage de flux
J'ai une image en C# WPF application dont l'action de construire est réglé sur "Moyen". C'est juste un fichier dans le répertoire source, il n'a pas été ajouté à l'application de la collecte des ressources à travers le glisser/déposer de dialogue des propriétés. Je suis en train de l'écrire comme un ruisseau, mais je ne peux pas l'ouvrir en dépit de ses tentatives assez peu de variations de points, les barres obliques, les espaces de noms et apparemment tout le reste.
Je peux accéder à l'utiliser ailleurs dans le code xaml avec "la meute://application:,,,/Resources/images/flags/tr.png", mais je ne peux pas obtenir à un flux contenant il.
La plupart des endroits, semble dire l'utilisation
using(BinaryReader reader = new BinaryReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("ResourceBlenderExpress.Resources.images.flags.tr.png"))) {
using(BinaryWriter writer = new BinaryWriter(File.OpenWrite(imageFile))) {
while((read = reader.Read(buffer, 0, buffer.Length)) > 0) {
writer.Write(buffer, 0, read);
}
writer.Close();
}
reader.Close();
}
Que je n'ai pas eu de chance avec.
Vous devez vous connecter pour publier un commentaire.
GetManifestResourceStream est traditionnelle .Montant NET des ressources c'est à dire ceux qui sont référencés dans les fichiers RESX. Ce ne sont pas les mêmes que les ressources WPF c'est à dire ceux qui ont été ajoutés avec une action de génération de Ressources. Pour accéder à ces documents, vous devez utiliser Application.GetResourceStream, en passant dans le pack: URI. Cette fonction retourne une StreamResourceInfo objet, qui est un Flux de la propriété à l'accès à la ressource de données.
Vous êtes probablement à la recherche pour
Application.GetResourceStream
Si je reçois de vous droite, vous avez un problème pour ouvrir les flux de ressources, parce que vous ne connaissez pas son nom exact? Si oui, vous pouvez utiliser
pour obtenir une liste des noms de toutes les ressources incluses. De cette façon, vous pouvez trouver le nom de la ressource qui a été assignd à votre image.
GetCallingAssembly
au lieu deGetExecutingAssembly
?Il n'y a pas besoin d'appeler la méthode Close (), il sera automatiquement appelée par Dispose() à la fin de la clause using. Ainsi, votre code pourrait ressembler à ceci: