Embedding a binary file inside a class library

2019-04-05 04:51发布

问题:

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

回答1:

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.



回答2:

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).