是否可以将.zip文件作为.net程序集中的资源?如果是这样的话,它是如何完成的,我如何访问它?
我认为这可以访问那里的数据吗?我以前曾使用它来访问图像,但我似乎还记得必须手动将资源重新导入visual studio以获取更改。是否可以在编译时包含.zip?
编辑(@Tejs)
如果右键单击资源,以下是我可以使用的选项:


发布于 2011-08-31 21:38:16
好吧,我发现了一些似乎有用的东西:
步骤1-嵌入.zip
Configuration Properties > Linker > InputEmbed Managed Resource File属性。对于我最初的测试用例,我添加了$(ProjectDir)\ReadMe.zip,它是visual在创建新项目时创建的自述文件的压缩。步骤2-提取.zip
添加一些代码来解压缩该.zip文件:
Reflection::Assembly^ a1 = Reflection::Assembly::GetExecutingAssembly();
cli::array<String^>^ names = a1->GetManifestResourceNames();
for each( String^ name in names )
{
IO::BinaryReader^ s1 = gcnew IO::BinaryReader(a1->GetManifestResourceStream(name));
String^ fileName = "Extracted_"+name;
IO::BinaryWriter^ sw = gcnew IO::BinaryWriter( IO::File::Open( fileName, IO::FileMode::Create ) );
sw->Write(s1->ReadBytes(s1->BaseStream->Length));
sw->Flush();
sw->Close();
}当该代码段运行时,在编译时添加到清单中的每个.zip文件都会神奇地出现在程序运行的同一个目录中。我已经尝试过修改.zip的内容,而且足够肯定的是,重新编译会将修改后的文件添加到可执行文件中,并且结果会按预期提取出来。
发布于 2011-08-31 15:23:36
您只需在Embedded Resource下将zip文件标记为Build Action。http://msdn.microsoft.com/en-us/library/0c6xyb66.aspx
发布于 2011-08-31 15:31:34
查看托管在DotNetZip上的CodePlex库源代码。他们使用预构建过程将文件压缩到.zip中,并将其作为资源嵌入库中,以便以后访问它(它包含自解压缩档案所需的内容)。
https://stackoverflow.com/questions/7259286
复制相似问题