CS0246: не удалось найти тип или имя пространства имен ZipArchive, но dll находится в GAC - PullRequest
0 голосов
/ 31 августа 2018

У этой ошибки много вопросов о SO, но у меня проблема не в машине разработки в VisualStudio 2017, а в машине развертывания. На обеих машинах установлен .Net 4.5. Проект .Net 4.5. Ссылки в проекте в порядке, я могу использовать класс ZipArchive для тестирования.

В исходном коде у меня есть

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

На обеих машинах я нашел 3 dll для System.IO.Compression, не в 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 в разделе «подробный вывод компилятора» я вижу множество параметров, относящихся к указанному выше пути к каталогу, например ::1010

/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 голосов
/ 03 сентября 2018

Я решил собственную проблему, переместив зависимость от проекта Web Site в проект библиотеки классов. Тем не менее, было бы приятно узнать, почему это было необходимо.

...