【发布时间】:2015-08-09 16:07:40
【问题描述】:
我正在尝试从项目中的资源中提取 .zip 文件,因此在网上找到了这个使用 SharpZipLib 的出色示例:
try
{
ResourceManager objResMgr = new ResourceManager("My_Project.MyFile", Assembly.GetExecutingAssembly());
byte[] objData = (byte[])objResMgr.GetObject("MyFile.zip");
MemoryStream objMS = new MemoryStream(objData);
ZipInputStream objZIP = new ZipInputStream(objMS);
ZipEntry theEntry;
while ((theEntry = objZIP.GetNextEntry()) != null)
{
FileStream streamWriter =
File.Create(System.IO.Path.Combine("C:/", theEntry.Name));
int size = objData.Length;
byte[] data = new byte[size];
while (true)
{
size = objZIP.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
}
streamWriter.Close();
}
objZIP.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
问题是,当我运行我的代码时,我收到一个异常,要求我检查“My_Project.MyFile.ressources”是否已正确嵌入或链接到程序集“我的项目”中。 如果我的 zip 的 Build Action 是“Ressource”或“Embedded Ressource”,就会出现这种情况。我确信 zip 文件最终会出现在 .exe 中,因为它的大小。
【问题讨论】: