我正在尝试在VS2015 Preview中的ASP.NET VNext类库中使用System.IO.Compression.ZipArchive
。我使用NuGet添加了System.IO.Compression
包,并将其作为aspnetcore50依赖项添加到我的project.json中。
当我尝试使用ZipArchive
时,智能感知说明在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.Compression
NuGet包时,它在aspnetcore50中可用。这是为什么?
答案 0 :(得分: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"
}
}
}
}
示例代码
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");
}