代码之家  ›  专栏  ›  技术社区  ›  Andy

在类库中嵌入二进制文件

  •  11
  • Andy  · 技术社区  · 17 年前

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

    我想这可能是通过资源实现的。

    多谢

    2 回复  |  直到 17 年前
        1
  •  14
  •   John Hunter    17 年前

    您可以通过项目属性将文件添加到资源中来实现这一点。然后,Visual Studio将为您提供一个方便的类,以便使用以下代码访问文件

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

    其中资源名称是二进制文件。

        2
  •  4
  •   mmmmmmmm    17 年前

    是的,这很容易:

    将文件添加到项目中,并将“生成操作”设置为“嵌入资源”。

    在你的节目里

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

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