在类库中嵌入二进制文件
Posted
技术标签:
【中文标题】在类库中嵌入二进制文件【英文标题】:Embedding a binary file inside a class library 【发布时间】:2010-10-27 21:03:14 【问题描述】:是否可以在 C# 类库中嵌入自定义二进制文件,然后在运行时使用二进制阅读器读取它?
我猜这可能是通过资源实现的。
非常感谢
【问题讨论】:
【参考方案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:我对以下答案的评论。如果原始文件发生变化,我下次构建项目时会自动重新嵌入吗? 是的,如果您更改文件,下一次构建将更新资源文件。以上是关于在类库中嵌入二进制文件的主要内容,如果未能解决你的问题,请参考以下文章
.NET Core在类库中读取配置文件appsettings.json