I'm trying to store an empty Access database (.mdb) as a resource in my application. I then want to write it out the file system and populate it with table definitions, etc. The problem I'm having in Visual Studio 2005 and my C# application is with not being able to access the resource stored in the same assembly (which I would have thought would be accessible by default). Here's my code:
byte[] abytResource;
System.Reflection.Assembly objAssembly = System.Reflection.Assembly.GetExecutingAssembly();
objStream = objAssembly.GetManifestResourceStream("empty.mdb");
abytResource = new Byte[objStream.Length];
objStream.Read(abytResource, 0, (int)objStream.Length);
objFileStream = new FileStream(newDatabasePathWithName, FileMode.Create);
objFileStream.Write(abytResource, 0, (int)objStream.Length);
objFileStream.Close();
GetManifestResourceStream returns NULL and according to the documentation that's because the resource must be private (because even if it doesn't exist a non-NULL value is returned). So my question is this:
How do i make my resource accessible to my own application? I already added it to the project and marked it as "Embedded Resource", by the way.
Thanks!
You need to prefix the "empty.mdb" with the default namespace of the assembly. Something like:
objStream = objAssembly.GetManifestResourceStream("My.Namespace.empty.mdb");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With