首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将.zip文件包含在.net (C++-CLI)程序集中?

如何将.zip文件包含在.net (C++-CLI)程序集中?
EN

Stack Overflow用户
提问于 2011-08-31 15:19:05
回答 3查看 1.5K关注 0票数 1

是否可以将.zip文件作为.net程序集中的资源?如果是这样的话,它是如何完成的,我如何访问它?

我认为可以访问那里的数据吗?我以前曾使用它来访问图像,但我似乎还记得必须手动将资源重新导入visual studio以获取更改。是否可以在编译时包含.zip?

编辑(@Tejs)

如果右键单击资源,以下是我可以使用的选项:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-31 21:38:16

好吧,我发现了一些似乎有用的东西:

步骤1-嵌入.zip

  • 右键单击项目并转到属性。
  • 导航到Configuration Properties > Linker > Input
  • 将路径添加到.zip文件到Embed Managed Resource File属性。对于我最初的测试用例,我添加了$(ProjectDir)\ReadMe.zip,它是visual在创建新项目时创建的自述文件的压缩。

步骤2-提取.zip

添加一些代码来解压缩该.zip文件:

代码语言:javascript
复制
        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的内容,而且足够肯定的是,重新编译会将修改后的文件添加到可执行文件中,并且结果会按预期提取出来。

票数 1
EN

Stack Overflow用户

发布于 2011-08-31 15:23:36

您只需在Embedded Resource下将zip文件标记为Build Actionhttp://msdn.microsoft.com/en-us/library/0c6xyb66.aspx

票数 3
EN

Stack Overflow用户

发布于 2011-08-31 15:31:34

查看托管在DotNetZip上的CodePlex库源代码。他们使用预构建过程将文件压缩到.zip中,并将其作为资源嵌入库中,以便以后访问它(它包含自解压缩档案所需的内容)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7259286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档