Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Embedding a binary file inside a class library

Is it possible to embed a custom binary file inside a C# class library and then at runtime read it with a binary reader?

I'm guessing it might be possible through resources.

Many thanks

like image 990
Andy Avatar asked May 21 '09 08:05

Andy


2 Answers

You can do this by adding the file to the Resources through the project properties. Visual studio will then give you a handy class to access your file using the following code

byte[] theFile = myNamespace.Properties.Resources.theBinaryFile;

Where the resource name is theBinaryFile.

like image 195
John Hunter Avatar answered Oct 24 '22 22:10

John Hunter


Yes it is easy:

Add the file to your project and set the "Build action" to "Embedded resource".

In your program do

foreach (string name in Assembly.GetExecutingAssembly().GetManifestResourceNames())
{
  if (name.EndsWith("<name>", StringComparison.InvariantCultureIgnoreCase))
  {
    using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(name))
    {
      // ...
    }
    break;
  }
}

Finding the right resource is a little bit complicating because there is stuff in front of the file name (namespaces etc. set a breakpoint to the if(...) to see the real resource name).

like image 43
mmmmmmmm Avatar answered Oct 24 '22 21:10

mmmmmmmm