我正在尝试将空的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();
Run Code Online (Sandbox Code Playgroud)
GetManifestResourceStream返回NULL并根据文档,因为资源必须是私有的(因为即使它不存在,也会返回非NULL值).所以我的问题是:
如何使我的资源可以访问我自己的应用程序?我已经将它添加到项目中并将其标记为"嵌入式资源".
谢谢!
Dav*_*d M 16
您需要在"empty.mdb"前加上程序集的默认命名空间.就像是:
objStream = objAssembly.GetManifestResourceStream("My.Namespace.empty.mdb");
Run Code Online (Sandbox Code Playgroud)
您还可以通过调用来检查资源的名称
string[] myResources = objAssembly.GetManifestResourceNames();
foreach(string reso in myResources) {
Console.WriteLine(reso);
}
Run Code Online (Sandbox Code Playgroud)
此外,请确保您的empty.mdb文件在编译操作时标记为Embedded Resource
alt text http://img520.imageshack.us/img520/6649/sinttuloo.png
| 归档时间: |
|
| 查看次数: |
10120 次 |
| 最近记录: |