我试图在VS2015 Preview中的ASP.NET VNext类库中使用System.IO.Compression.ZipArchive.我使用NuGet添加了System.IO.Compression包,并将其作为aspnetcore50依赖项添加到我的project.json中.
当我尝试使用ZipArchive时,Intellisense说在ASP.NET 5.0中不可用,但它在ASP.NET Core 5.0中可用.如果我切换到使用顶部栏中的下拉列表使用ASP.NET Core,那么我的代码按预期工作,但是当我选择正常的ASP.NET它不起作用.
我尝试手动添加它作为一个依赖项到aspnet50在project.json,但是没有修复它.
我需要在Core CLR上使用完整的CLR,因为我需要在运行时将程序集加载到AppDomain中,我相信Core CLR不支持这种方式.
请有人解释这里发生了什么,也许指出一些文章或博客文章,告诉我如何解决这个问题.
更新:
我想一个更好的方法或措辞这是 – ZipArchive在aspnet50中不可用,但是当我添加System.IO.Compression NuGet软件包时,它可以在aspnetcore50中使用.为什么是这样?
解决方法
他们只有我得到项目编译和工作正在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" } } } }
示例代码
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"); }