ASP.NET VNext 完整 CLR 中的 System.IO.Compression
Posted
技术标签:
【中文标题】ASP.NET VNext 完整 CLR 中的 System.IO.Compression【英文标题】:System.IO.Compression in ASP.NET VNext full CLR 【发布时间】:2015-01-23 06:36:58 【问题描述】:我正在尝试在 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 中可用。这是为什么呢?
【问题讨论】:
您是否尝试将 System.IO.Compression 添加为程序集引用,而不是 NuGet?它是默认 .NET 框架安装的一部分。 我还在学习 v5.0,但我认为在针对完整的 CLR 时您不需要这样做。我有可用的命名空间,但没有 ZipArchive,这就是为什么我尝试通过 NuGet 添加它,然后只将它添加到 Core CLR。 添加一个基本的 .NET 程序集引用是正常的事情。 NuGet 是一个扩展,只有在添加 .NET 中不存在的外部引用时才需要它。还是从 .NET v5 中删除? 是的,我明白了,但是新的 ASP.NET 东西不正常,因此会造成混乱:) 除非我错过了一些重要的东西 - 我将如何在 VS2015 中使用 VNext 类库做到这一点? 【参考方案1】:我让项目编译和工作的唯一方法是在 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");
【讨论】:
谢谢!看起来我只是错过了 aspnet50 中的"frameworkAssemblies"
。我不知道这件事。这是为作为框架一部分的程序集添加程序集引用的新方法吗?
嗨汤姆,我不是 100% 肯定,但我认为这是现在的新方法,我对 httpclient 有同样的问题,我解决问题的方法是添加核心参考和框架参考。
谢谢!!!我刚才肯定花了四个小时试图在我的 vNext 项目中添加一个框架引用。我变得非常气馁,因为它应该不会超过五秒钟,但这个答案挽救了一天!以上是关于ASP.NET VNext 完整 CLR 中的 System.IO.Compression的主要内容,如果未能解决你的问题,请参考以下文章