在.Net CORE 1.0中解压缩存档

时间:2016-01-22 17:50:04

标签: c# .net zip asp.net-core .net-core

我目前正在开发一个ASP.NET Core 1.0项目。我想同时留在 dnxcore50 dnx451 。这让我现在面临以下问题:

如何将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框架运行4.6我在运行时遇到以下异常崩溃:

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

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.

1 个答案:

答案 0 :(得分:1)

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