在类库中嵌入二进制文件

And*_*ndy 12 c# binary embedding

是否可以在C#类库中嵌入自定义二进制文件,然后在运行时使用二进制读取器读取它?

我猜这可能是通过资源来实现的.

非常感谢

Joh*_*ter 15

您可以通过项目属性将文件添加到Resources来完成此操作.Visual Studio将为您提供一个方便的类来使用以下代码访问您的文件

byte[] theFile = myNamespace.Properties.Resources.theBinaryFile;
Run Code Online (Sandbox Code Playgroud)

资源名称是theBinaryFile的位置.

  • 是的,如果您更改文件,下一次构建将更新资源文件。 (2认同)

mmm*_*mmm 6

是的,这很容易:

将文件添加到您的项目并将“构建操作”设置为“嵌入资源”。

在你的程序中做

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

查找正确的资源有点复杂,因为文件名前面有一些内容(命名空间等。在 if(...) 中设置断点以查看真实的资源名称)。