Почему платформа dlls повторена в нескольких местах?

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

1 - GAC: %systemroot %\assembly

2-каталогов установки Платформы: %systemroot %\Microsoft.NET\Framework\v...

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

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

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

6
задан Community 23 May 2017 в 10:33
поделиться

2 ответа

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

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

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

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

  3. Да, сборок каркаса нет, только инструменты сборки.

2
ответ дан 17 December 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: