Reading embedded files at runtime
I have class library that contains some XML-files as embedded resources. Reading these files at runtime is very easy. It takes only couple of lines of code.
Let’s assume we have class library MyExamples.TestLibrary where we have XML-file called mappings.xml. When we compile our class library then mappings.xml will be put inside assembly as embedded resource. Here is the code to read this XML-file (you need to import System.IO, System.Reflection and System.XML namespaces).
C#var fileName = "MyExamples.TestLibrary.mappings.xml";
var assembly = Assembly.GetExecutingAssembly();
var stream = assembly.GetManifestResourceStream(fileName);
if (stream == null)
{
throw new FileNotFoundException("Cannot find mappings file.",
fileName);
}
var doc = new XmlDocument();
doc.Load(stream);
// Do something cool with embedded XML
VB.NET
Dim fileName = "MyExamples.TestLibrary.mappings.xml"
Dim assembly = Assembly.GetExecutingAssembly()
Dim stream = assembly.GetManifestResourceStream(fileName)
If stream Is Nothing Then
Throw New FileNotFoundException("Cannot find mappings file.", _
fileName)
End If
Dim doc = New XmlDocument()
doc.Load(stream)
' Do something cool with embedded XML
Some things to notice. If there is no resource we are asking then stream will be null. No exception will be thrown. Second thing is resource name. We don’t use only file name but also assembly name to locate the resource. If you don’t provide assembly name then resource is not found and resource stream is null.