【问题标题】:Embedding a binary file inside a class library在类库中嵌入二进制文件
【发布时间】:2010-10-27 21:03:14
【问题描述】:

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

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

非常感谢

【问题讨论】:

    标签: c# binary embedding


    【解决方案1】:

    是的,这很容易:

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

    在你的程序中做

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

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

    【讨论】:

    • 这很好用。尤其是当我不断更改文件内容时,它只是在我构建项目时重新嵌入。
    【解决方案2】:

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

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

    资源名称是二进制文件。

    【讨论】:

    • RE:我对以下答案的评论。如果原始文件发生变化,我下次构建项目时会自动重新嵌入吗?
    • 是的,如果您更改文件,下一次构建将更新资源文件。
    猜你喜欢
    • 2020-01-06
    • 2012-12-19
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 2015-03-11
    • 1970-01-01
    • 2015-01-16
    相关资源
    最近更新 更多