24 April 2008 .NET, ASP.NET, C#, Embedded Resource, Namespace, Xml, XmlSerializer oliver.guhr

Ich hatte ver kurzem das Problem das ich auf eine XML Datei in meinem Projekt zugreifen musste aber den genauen Pfad nicht kannte. Das erzeugen eines dynamischen Pfades per “AppDomain.CurrentDomain.BaseDirectory” war nicht möglich da ich mit Usercontrols arbeitete und so nur den Pfad der Datei bekam die mein Uercontrol einbindet. Gelöst habe ich das Problem in dem ich über den Namespace auf die XML Datei zugegriffen habe:

// XmlResource  = Namespace + Dateiname
string XmlResource = "CodeInside.WebApp." + "Daten.xml";

  using (Stream FileStream = System.Reflection.Assembly.
    GetExecutingAssembly().GetManifestResourceStream(XmlResource))
  {
    XmlSerializer Ser = new XmlSerializer(typeof(List));
    StreamReader Sr = new StreamReader(FileStream );
    List Data = (List)Ser.Deserialize(Sr);
    Sr.Close();              
  }
</pre>

Damit man auf die Datei auch zugreifen kann muss man in den Eigeschaften der Datei das Feld "Build Action" auf "Embedded Resource" stellen. 
Embedded Resource