2012-06-01 4 views
6

Я заметил что-то странное относительно расположения .NET DLL. Я пытался отладить проблему с System.ServiceModel.dll, и я заметил, что, хотя у меня установлен .NET 4.0, в моем GAC установлена ​​только версия 3.0 ServiceModel DLL (я проверил, изучая C: \ Windows \ монтаж). Однако, если я перехожу к «C: \ Program Files \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client», то там сидит версия 4.0. Итак, почему .NET не устанавливает версии 4.0 в GAC?Почему в GAC не добавляются DLL .NET Framework 4.0?

И учитывая, что это не так, как мои программы 4.0 знают, где найти 4,0 DLL? Является ли путь к файлу, который я дал выше, проверен автоматически? Я оглянулся на свое приложение, которое использует DLL 4.0, чтобы подтвердить, что он НЕ копирует DLL локально, поэтому кажется, что он должен получать его из GAC (и теперь я знаю, что DLL там нет) или зондирования в папке .NETFramework. Это действительно путало меня ...

Редактировать: Я следовал совету MystereMan и запускал «Gacutil.exe/l System.ServiceModel», но он все еще только показывает версию 3.0. Означает ли это, что .NET 4 НЕ устанавливал DLL в GAC?

Редактировать # 2 и разрешение: gacutil.exe в моей PATH является более старой версией, которая не может видеть сборки 4.0. При поиске на моем компьютере я нашел версию gacutil.exe 4.0: C: \ Program Files \ Microsoft SDK \ Windows \ v7.0A \ bin \ NETFX 4.0. Используя это, я наконец смог увидеть список 4.0 System.ServiceModel.dll. Спасибо всем за помощь!

Спасибо,

-Роберт

+0

Возможный дубликат [Gacutil.exe успешно добавляет сборку, но сборка не отображается в проводнике. Почему?] (Http://stackoverflow.com/questions/3054304/gacutil-exe-successfully-adds-assembly-but-assembly-not-viewable-in-explorer-w) –

+0

Это не дубликат - я ' m спрашивает, почему DLL .NET Framework 4.0 не похоже на GAC, а не на просмотр GAC. – JoeCool

+0

* * * в GAC, только не там, где вы ожидаете их сохранения. –

ответ

3

.Net 4.0 использует другой GAC, в Windows\Microsoft.Net\assembly.

Файлы в Reference Assemblies - это пустые заглушки, которые используются только для фильтрации IntelliSense в Visual Studio для разных целевых фреймворков.
Если вы откроете их в ILSpy, вы увидите, что все методы пустые.

+2

Wtf, почему они не могут оставаться постоянными ... – Mehrdad

+0

@Mehrdad: О какой части вы спрашиваете? Есть причины для обоих. – SLaks

+1

Итак, это задает вопрос, что представляет собой полный список местоположений, которые составляют коллективную вещь, которую все мы хотели бы назвать GAC? Это просто сборка Windows \ Windows \ Microsoft.Net \ сборка? Или я узнаю о другой папке в следующий раз, когда у меня возникнет странная ошибка ссылки DLL? – JoeCool

Смежные вопросы