Frage

Ich habe eine Baugruppe irgendwo auf dem Dateisystem bekam, z.B. "C: \ temp \ test.dll". In dieser Anordnung gibt es ein Resource, z.B. "Abc.xaml".

Wie kann ich das Resource? Vielleicht gibt es eine Möglichkeit, mit Reflexionen? Ich habe keine Lösung bisher finden.

Vielen Dank im Voraus!

Edit: Ich wollte nur hinzufügen, dass ich die Ressourcen im Wörterbuch zugreifen möchten, zum Beispiel ein Stil.

War es hilfreich?

Lösung 2

Edit: Ich fand eine noch bessere Lösung, die mit ResourceDictionaries funktioniert:

Assembly.LoadFrom(@"C:\temp\test.dll");
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri("/test;component/myresource.xaml");

Nun, ich konnte es nicht mit ResourceDictionaries zu arbeiten, so dass ich bin mit gutem altem Resource Files statt;) Für alle Interessierten, hier ist, wie ich es getan habe:

Assembly a = Assembly.LoadFile(@"C:\temp\test.dll");
ResourceManager rm = new ResourceManager("NameOfResource", a);
object o = rm.GetObject("xyz");

Sie können "NameOfResource" mit Reflektor erhalten, wie Ian vorgeschlagen.

Andere Tipps

Sie müssen tatsächlich die Uri so schreiben:

Assembly.LoadFrom(@"C:\temp\test.dll");
ResourceDictionary rd = new ResourceDictionary();
rd.Source = new Uri(@"pack://application:,,,/test;component/myresource.xaml");

Schnappen Sie sich eine Kopie von Reflector (Lutz hat dies nun vorbei geben). Verwenden Sie, dass bei der Montage zu schauen und den Namensraum usw. der Ressourcen in sie.

Dann in der eingebetteten Ressource in etwa so lesen;

Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
using (System.IO.Stream s = asm.GetManifestResourceStream(<yourname>)
{
    using (System.IO.StreamReader reader = new System.IO.StreamReader(s))
    {
        string xml = reader.ReadToEnd();
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top