2017-01-31 3 views
0

Ich frage, weil ich schon überall, ohne zu finden Ergebnisse gesucht ...Holen Sie sich das Ressourcenordnerpfad eines Bildes

ich bereits diese beiden Methoden versuchen:

//first attempt 
  Var filePath = System.Reflection.Assembly.GetExecutingAssembly(). Location + @"\..\..\Resources\Image.jpg"; 

//Second attempt 
System.Reflection.Assembly.GetExecutingAssembly(). GetManifestResourceNames(); 

Sonde Bereits diese Verfahren, in denen sie taten keine Ergebnisse Ich brauche nur den Weg eines Bildes von meinem Projekt zu erhalten. Hilfe bitte.

+1

Alle, Doppel Backslashes und Leerzeichen in Ihrer Pfadzeichenfolge werden Ihre Ergebnisse abwerfen. – Abion47

+0

Es gibt keinen Ressourcenordner in einer bereitgestellten App – Plutonix

Antwort

0

Stellen Sie sicher, dass die Erstellungsaktion Ihres Elements auf Eingebettete Ressource festgelegt ist.

Sie diese beiden Methoden nützlich sein könnten, in der name der Ressource übergeben und eine Liste der assemblies - es wird die Baugruppen, um suchen, die eine einfache

Fähigkeit Überschreibung Ressource bietet
private static Tuple<Assembly, string> FindEmbeddedResource(string name, params Assembly[] assemblies) 
    { 
     foreach (var assembly in assemblies) 
     { 
      var resourceName = assembly.GetManifestResourceNames().FirstOrDefault(r => r.EndsWith(name)); 

      if (resourceName != null) 
      { 
       return new Tuple<Assembly, string>(assembly, resourceName); 
      } 
     } 

     return new Tuple<Assembly, string>(null, null); 
    } 

    /// <summary> 
    /// Gets the embedded resource scanning assemblies in the order supplied. Allows APIs to override library assets. 
    /// </summary> 
    /// <param name="name">The name.</param> 
    /// <param name="assemblies">The assemblies.</param> 
    /// <returns></returns> 
    private static string GetEmbeddedResource(string name, params Assembly[] assemblies) 
    { 
     var embeddedResource = FindEmbeddedResource(name, assemblies); 
     var assembly = embeddedResource.Item1; 
     var resource = embeddedResource.Item2; 

     if (assembly != null) 
     { 
      var stream = assembly.GetManifestResourceStream(resource); 
      using (var textStreamReader = new StreamReader(stream)) 
      { 
       resource = textStreamReader.ReadToEnd(); 
      } 
     } 

     return resource; 
    } 
+0

Danke, aber wie finde ich nur den Namen in einer Variablen? – Diego

+0

Wenn Ihre 'Image.jpg' eine eingebettete Ressource ist, können Sie' yourAssembly.GetManifestResourceNames() 'verwenden, um herauszufinden, wie der Compiler sie aufgerufen hat. – stevieg

Verwandte Themen