Почему каркасные библиотеки повторяются в нескольких местах? - PullRequest
6 голосов
/ 17 мая 2010

После установки .Net 4 и получения некоторых вопросов, на которые уже даны ответы здесь Я также понял, как DLL-библиотеки Framework повторяются в нескольких местах для разных версий Framework (это не ново, это происходит с версии, но до сих пор не обращали на это внимания)

1 - GAC:% systemroot% \ Assembly

2- Каталог установки Framework:% systemroot% \ Microsoft.NET \ Framework \ v ...

3- и, если у вас установлен Windows SDK, также в: C: \ Program Files \ Microsoft SDKs \ Windows \

Я думаю, что последние являются так называемыми «ссылочными сборками» и имеют дополнительные метаданные для помощи Visual Studio, но

как насчет местоположения № 2? Почему там повторяются сборки?

Ответы [ 2 ]

2 голосов
/ 17 мая 2010
  1. Нет, это местоположение GAC для .NET 1.x через 3.5.GAC для 4.0 находится в каталоге c: \ windows \ microsoft.net \ assembly.Почему это было перемещено, непонятно, вероятно, чтобы избежать проблем с проектами, которые ссылались на сборки непосредственно из GAC, большое нет-нет, но это было сделано.

  2. Да, эталонные сборкижить там.Также в c: \ программные файлы \ справочные сборки.Они изначально являются дословными копиями собраний, хранящихся в GAC.Пока вы не развернете какое-то исправление.Разделяя их, вы гарантируете, что вы создаете программы, предназначенные для «правильных» сборок фреймворка, а не того, что хранится в вашем GAC.

  3. Да, сборок фреймворка не существует, просто сборкаинструменты.

1 голос
/ 17 мая 2010

Это скорее обоснованное предположение, чем реальный ответ, но ...

Для того чтобы изначально GAC DLL был необходим, у вас должен быть полный DLL (он же не ссылочная сборка) для использования GAC. Ссылочная сборка не будет работать, так как не имеет исполняемого кода. Следовательно, вам нужна настоящая DLL-библиотека, из которой нужно получить исходный код GAC, чтобы получить местоположение # 2.

...