首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.IO.Compression DLL丢失,可能存在版本冲突

System.IO.Compression DLL丢失,可能存在版本冲突
EN

Stack Overflow用户
提问于 2016-09-22 23:22:02
回答 1查看 807关注 0票数 1

我正在构建一个ASPNET Core/EF Core/MVC 6网站,它最终将在Azure下运行。我遇到了一个奇怪的问题,涉及到一个我以前从未遇到过的依赖DLL。

该解决方案由多个项目组成。其中有几个是通过ZipArchive操作zip文件的,因此它们依赖于System.IO.Compression。解决方案编译时没有任何问题。

但是,System.IO.Compression DLL没有复制到最终的bin目录,这自然会导致站点在尝试访问该程序集中的例程时崩溃。

我通过手动将System.IO.Compression.dll复制到最终的bin目录“解决”了这个问题。这个网站在我的开发系统上运行得很好。

但是当我将站点发布到Azure时,System.IO.Compression.dll没有部署,并且在尝试访问缺失的程序集时,Azure站点崩溃。

我不确定是否可以手动将丢失的DLL复制到Azure,但如果可以,我想这是一种解决方案。

但这一切都让人感觉笨拙,好像我错过了什么。

因此,我回去查看了每个项目中的参考资料,发现了一些奇怪的东西。

在一个“附属”项目中-- ConnellData --显示引用,正如预期的那样,显示了对System.IO.Compression v4.1.0的依赖。

但是当我查看依赖于ConnellData的“主”项目,并展开对ConnellData的引用时……有一个对System.IO.Compression的依赖,但它是针对4.0.10版本的。

我不知道这是否与DLL丢失问题有关,但看起来可能是。

任何关于如何解决这个问题的想法或建议都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-09-24 12:47:51

这个问题最终变得很容易solve...but很难诊断。

我的project.json文件包含以下框架条目:

代码语言:javascript
复制
  "frameworks": {
    "net46": {
    }
  },

它还在依赖项部分下声明了System.IO.Compression的依赖项。

不幸的是,这是一个>>different<< System.IO.Compression,是Net Core的一部分。我使用的是内置的net46程序集System.IO.Compression。

要将其包含在项目中,您必须将其添加到frameworkAssemblies部分,而不是依赖项部分:

代码语言:javascript
复制
  "frameworks": {
    "net46": {
      "frameworkAssemblies": {
        "System.IO.Compression": "4.0.0.0"
      },
    }
  },

这样做是我的解决方案中依赖于System.IO.Compression的net46版本的每个项目--并从依赖项部分删除System.IO.Compression条目--解决了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39642990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档