gpt4 book ai didi

.net - 如何在 C# 应用程序中访问二进制资源

转载 作者:行者123 更新时间:2023-12-03 23:46:11 25 4
gpt4 key购买 nike

我正在尝试将一个空的 Access 数据库 (.mdb) 作为资源存储在我的应用程序中。然后我想把它写出文件系统并用表定义等填充它。我在 Visual Studio 2005 和我的 C# 应用程序中遇到的问题是无法访问存储在同一个程序集中的资源(我会认为默认情况下可以访问)。这是我的代码:

byte[] abytResource;
System.Reflection.Assembly objAssembly = System.Reflection.Assembly.GetExecutingAssembly();
objStream = objAssembly.GetManifestResourceStream("empty.mdb");
abytResource = new Byte[objStream.Length];
objStream.Read(abytResource, 0, (int)objStream.Length);
objFileStream = new FileStream(newDatabasePathWithName, FileMode.Create);
objFileStream.Write(abytResource, 0, (int)objStream.Length);
objFileStream.Close();

GetManifestResourceStream 返回 NULL 并且根据文档,这是因为资源必须是私有(private)的(因为即使它不存在,也会返回非 NULL 值)。所以我的问题是:

如何让我自己的应用程序可以访问我的资源?顺便说一句,我已经将它添加到项目中并将其标记为“嵌入式资源”。

谢谢!

最佳答案

您需要在“empty.mdb”前面加上程序集的默认命名空间。就像是:

objStream = objAssembly.GetManifestResourceStream("My.Namespace.empty.mdb");

关于.net - 如何在 C# 应用程序中访问二进制资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/725915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com