Вопрос

Я немного сбит с толку тем, где физически расположены сборки .NET.Возьмем старое доброе LINQ.В моем web.config файл, в котором написано:

<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

Это ссылка на LINQ.Но где именно находится библиотека DLL, на которую это ссылается?В приведенном выше примере нет никакого пути, и его нет в моей папке bin.

У меня также есть то, что я считаю ссылкой на стороннюю сборку:

<add assembly="MapInfo.CoreTypes, Version=4.0.0.483, Culture=neutral, PublicKeyToken=F548BCBA69D4B8DA" />

Как я могу определить, где это находится на моем компьютере, если этого нет в bin папка?

Кроме того, если DLL-файл находится в bin каталог, могу ли я предположить, что на него не нужно ссылаться в web.config?

Это было полезно?

Решение

Сторонние сборки могут отсутствовать в ПКК, см. статью MSDN Как среда выполнения находит сборки за свод правил.Или попробуйте SysInternals ФИЛЕМОН.

Другие советы

Я думаю, они расположены в ПКК, который находится в %WINDIR%\Assembly.Дополнительная информация находится в Демистификация глобального кэша сборок .NETПроект кода).

Проверка пути сборки и сварки довольно сложна.Я скажу, что обычно .NET разрешает сборку в одном из двух мест:

  1. Либо он найдет его в локальном каталоге, например в текущем каталоге, подкаталоге bin или другом месте, указанном логикой привязки сборки Fusion, либо

  2. он найдет его в глобальном хранилище GAC, где сборки можно регистрировать и искать по имени, версии и нескольким другим атрибутам.

Чтобы ответить на ваш конкретный вопрос о каталоге «bin», если вы используете ASP.NET (что я предполагаю из вашей ссылки на web.config), тогда да, вам не нужно указывать путь — ASP.NET позаботится обо всем, что ему нужно сделать, чтобы заставить .NET искать сборки в каталоге «bin».

Некоторые сборки .Net находятся в папке установки .Net

Такие , как

C:\Program Файлы (x86) \Ссылка Сборки\Microsoft\Framework.NetFramework\v4.0

Внутри сидят ассамблеи.В .NetFramework на один уровень выше вы найдете различные версии .NET и соответствующие им сборки.

Краткий ответ:это зависит от многих вещей.Рамки имеют свои правила для того, как он загружает сборки.Однако вы можете переопределить это, используя различные файлы конфигурации (machine.config и т. д.).Чтобы узнать, где на самом деле находятся ваши сборки в конкретной системе, используйте команду Средство просмотра журнала привязки сборок.(Это часть SDK платформы.Просто откройте командную оболочку SDK и запустите fuslogvw.exe.)

Сборку можно найти в основном в любом из следующих мест:

  • GAC - C:\Windows\Assembly\GAC (Microsoft предоставляется, а в некоторых случаях и третьей стороной)
  • Папка установки (большинство элементов управления сторонних производителей)

Вы можете получить путь и другую информацию о сборке, щелкнув правой кнопкой мыши на сборке в разделе ссылки на проект и выбрав Свойства.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top