ASP.NET VNext完全CLR中的System.IO.Compression

Tom*_*Tom 10 c# visual-studio-2015 asp.net-core

我正在尝试System.IO.Compression.ZipArchive在VS2015预览版的ASP.NET VNext类库中使用.我System.IO.Compression使用NuGet 添加了包,并将它作为aspnetcore50依赖项添加到我的project.json中.

当我尝试使用时ZipArchive,intellisense说在ASP.NET 5.0中不可用,但它在ASP.NET Core 5.0中可用.如果我使用顶部栏中的下拉菜单切换到使用ASP.NET Core,那么我的代码按预期工作,但是当我选择普通的ASP.NET时它不起作用.

我尝试在project.json中手动将其作为依赖项添加到aspnet50,但这并没有解决它.

我需要在Core CLR上使用完整的CLR,因为我需要AppDomain在运行时加载程序集,我相信Core CLR不支持这一点.

请有人解释一下这里发生了什么,也许可以指向一些文章或博客文章,告诉我如何解决这个问题.

更新: 我想这是一个更好的方法或措辞 - ZipArchive在aspnet50中没有,但是当我添加System.IO.CompressionNuGet包时,它在aspnetcore50中可用.为什么是这样?

Son*_*Sam 13

他们只是让我得到项目进行编译和工作的方式是在project.json中执行以下操作.我不太熟悉压缩库,所以我没有花时间尝试压缩文件.下面是一个示例代码,可以编译而没有任何问题.


{
    "version": "1.0.0-*",
    "dependencies": {

    },

    "frameworks": {
        "aspnet50": {
            "dependencies": {

            },
            "frameworkAssemblies": {                
                "System.IO.Compression": "4.0.0.0"

            }
        },
        "aspnetcore50": {
            "dependencies": {
                "System.Runtime": "4.0.20-beta-22231",                
                "System.IO.Compression.ZipFile": "4.0.0-beta-22231",
                "System.IO": "4.0.10-beta-22231",
                "System.IO.FileSystem": "4.0.0-beta-22231"

            }
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

示例代码

    public static void ZipFile(string path)
    {
        var data = new MemoryStream(File.ReadAllBytes(path));
        var zip = new ZipArchive(data, ZipArchiveMode.Create,false);
        zip.CreateEntry(path + ".zip");            
    }
Run Code Online (Sandbox Code Playgroud)