在 .Net CORE 1.0 中解压缩存档

Unzip archive in .Net CORE 1.0

我目前正在从事 ASP.NET Core 1.0 项目。我想同时留在 dnxcore50dnx451 上。现在让我想到以下问题:

如何将 zip 存档从文件系统解压缩到目录?

"System.IO.FileSystem.Primitives": "4.0.0-beta-22816",
"System.IO.FileSystem": "4.0.0-beta-22816"

"frameworks": {
    "dnx451": {
      "frameworkAssemblies": {
        "System.IO": ""
      }
    },
    "dnxcore50": {
      "dependencies": {
        "System.IO": "4.0.10-beta-*"
      }
    }
  }

使用 project.json 中的配置,我现在可以获得 GZipStream,但我不知道如何将该流存储到目录中。不幸的是,System.IO.Compression.ZipFile.ExtractToDirectory() 方法中的 ZipFile 对象在核心框架中并不存在 :/.

更新:

我现在以这种方式包含它并将其从整体依赖项中删除:

"frameworks": {
"dnx451": {
  "dependencies": {
    "System.IO.Compression.ZipFile": "4.0.1-beta-23516"
  }
},
"dnxcore50": {
  "dependencies": {
    "System.IO.Compression.ZipFile": "4.0.1-beta-23516"
  }
}

当我 运行 使用核心的应用程序按预期工作时,但 运行 将其与 .net Framework 4.6 结合使用时,我在 运行 期间因以下异常而崩溃:

处理请求时发生了 n 个未处理的异常。

An unhandled exception occurred while processing the request.
FileNotFoundException: Could not load file or assembly 'System.IO.Compression.ZipFile, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.

您在 project.json 中需要的依赖项如下。

"frameworks": {
    "net451": {
      "frameworkAssemblies": {
        "System.IO.Compression": "4.0.0.0",
        "System.IO.Compression.FileSystem":  "4.0.0.0"
      }
    },
    "dnxcore50": {
      "dependencies": {
        "System.IO.Compression.ZipFile": "4.0.1-beta-23516"
      }
    }
  },

project.json 根目录中的依赖项适用于适用于您正在使用的所有运行时的任何包。

.net 运行时中的 frameworkAssemblies 与您在基于 csproj 的普通项目中添加的引用相同。如果您不确定要添加什么,可以在此处找到程序集。 https://msdn.microsoft.com/en-us/library/mt472912(v=vs.110).aspx。您可以在此处使用依赖项部分来获取任何特定于网络的参考资料。

当谈到 dnxcore50 时,依赖项引用直接来自 nuget,但您可以使用 intellisense 找到这些。

可以在此处找到有关 project.json 的更多信息 https://github.com/aspnet/Home/wiki/Project.json-file