CS0246:找不到类型或名称空间名称“ ZipArchive”,但DLL在GAC中

时间:2018-08-31 16:54:32

标签: asp.net dll gac

此错误对SO有很多问题,但对我来说,问题不在Visual Studio 2017的开发计算机上,而是在部署计算机上。两台机器都安装了.Net 4.5。该项目是.Net 4.5。项目中的引用还可以,我可以使用ZipArchive类进行测试。

在源代码中我有一个

using System.IO.Compression;//GZipStream, ZipArchive 

在两台机器上,我都找到了System.IO.Compression的3个dll,不在C:\ Windows \ assembly中,而是在类似这样的目录中,应该可以:

C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.IO.Compression\v4.0_4.0.0.0__b77a5c561934e089

在web.config中有一行:

<add assembly="System.IO.Compression, Version=4.0.0.0, 
     Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

在网站项目属性页面中,我看到了对

的引用
 System.IO.Compression    GAC    4.0.0.0

在生产计算机上的IIS中,应用程序池位于.Net v4.0上。

在那台机器上,在Internet Explorer的“详细的编译器输出”下,我看到很多引用上面目录路径的选项,例如:

/R:"C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\
              v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll" 

/R:"C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Data.Services\
                v4.0_4.0.0.0__b77a5c561934e089\System.Data.Services.dll" 

那么为什么我可以在开发计算机上使用ZipArchive类,但是在部署计算机上却出现could not find错误,以及如何解决此问题?请帮助

1 个答案:

答案 0 :(得分:0)

我通过将依赖关系从网站项目移到类库项目解决了自己的问题。不过,仍然很高兴知道为什么这样做是必要的。