Я немного смущен тем, где блоки.NET физически расположены. Возьмите старый добрый LINQ. В моем web.config
файл это говорит:
Это - ссылка на LINQ. Но где точно DLL, это относится к расположенному? Нет никакого пути в вышеупомянутом, и это не находится в моей папке мусорного ведра.
Я также имею то, что я думаю, сторонняя ссылка на сборку:
Как я могу сказать, где это расположено на моей машине, если это не находится в bin
папка?
Кроме того, если файл DLL находится в bin
каталог, может я предполагать, что в нем не должны ссылаться web.config
?
Сторонние сборки могут отсутствовать в GAC , см. Статью MSDN Как среда выполнения определяет сборки , чтобы узнать о наборе правил. Или попробуйте SysInternals FILEMON .
Я думаю, что они находятся в GAC, который расположен в %WINDIR%\Assembly
. Больше информации в Demystifying the .NET Global Assembly Cache (на The Code Project).
Сборка и зондирование пути Fusion довольно сложно. Я скажу, что обычно .NET разрешает сборку из одного из двух мест:
Либо он найдет ее в локальном каталоге, таком как текущий каталог, подкаталог bin, или в другом месте, указанном логикой привязки сборки Fusion, или
он найдет его в глобальном хранилище GAC, где сборки можно зарегистрировать и искать по имени, версии и паре других атрибутов.
Чтобы ответить на ваш конкретный вопрос о каталоге bin, если вы используете ASP.NET (что я предполагаю из вашей ссылки на web.config
), тогда да, вам не нужно включить путь - ASP.NET позаботится обо всем, что ему нужно сделать, чтобы .NET искала сборки в каталоге bin.
Короткий ответ: это зависит от многих вещей. Фреймворк имеет свои правила того, как он загружает сборки. Однако вы можете переопределить это, используя различные файлы конфигурации (machine.config и т. Д.). Чтобы узнать, где на самом деле находятся ваши сборки в конкретной системе, используйте Assembly Binding Log Viewer . (Это часть SDK платформы. Просто откройте командную оболочку SDK и запустите fuslogvw.exe.)
Сборка может быть найдена в основном в одном из следующих мест:
Вы можете получить путь и другую информацию о сборке, щелкнув правой кнопкой мыши g для сборки в ссылках на ваш проект и выбрав Свойства .