我正在尝试将空的 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,根据文档,这是因为资源必须是私有的(因为即使它不存在,也会返回非 NULL 值)。所以我的问题是这样的:
如何使我自己的应用程序可以访问我的资源?顺便说一句,我已经将其添加到项目中并将其标记为“嵌入式资源”。
Thanks!
您需要在“empty.mdb”前面加上程序集的默认命名空间。就像是:
objStream = objAssembly.GetManifestResourceStream("My.Namespace.empty.mdb");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)