Как ASP.NET находит мою библиотеку классов? - PullRequest
2 голосов
/ 23 сентября 2011

Меня попросили обновить DLL библиотеки классов, которая используется приложением ASP.NET, созданным кем-то другим.Однако, когда я посмотрел на структуру папок для приложения ASP.NET, я обнаружил, что DLL существует в двух разных папках, и похоже, что приложение использует одну DLL при первом запуске, а другую - после перезапуска IIS.Я планирую все исправить, чтобы DLL-библиотека существовала только один раз в приложении, но я бы хотела понять, что происходит в первую очередь.

Вот в чем дело - библиотека DLL называется MyLib.DLL и существует в обеихподпапка BIN и папка с именем MyLibrary.Вот пример того, как страница ASPX в приложении вызывает метод в библиотеке классов:

Dim oMyClass As New MyLib.MyClass
Dim sTemp As String = oMyClass.GetVersion()

Приложение также имеет этот раздел в файле web.config:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="MyLib" culture="neutral"/>
      <codeBase version="1.0.0.0" href="MyLibrary/MyLib.dll"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>

Поскольку приложение имело две разные копии MyLib.DLL, я обновил обе, и функция GetVersion вернула разные результаты, чтобы я мог определить, какая DLL использовалась.Когда я запускаю приложение в первый раз, я вижу, что ASP.NET создает папку в папке «Temporary ASP.NET Files» и создает копию BIN-версии MyLib.DLL.И приложение будет возвращать «Из папки BIN» при вызове функции GetVersion.Однако, если я перезапущу IIS и снова запущу приложение, GetVersion начнет возвращать «Из папки MyLibrary», указывая, что теперь он использует DLL из папки MyLibrary, а не из папки BIN.

Итак, почемуASP.NET сначала использует версию BIN библиотеки DLL, но затем использует версию, указанную в параметре Codebase, после перезапуска IIS?Если я хотел избавиться от версии DLL BIN, как я могу настроить приложение на использование только копии в папке MyLibrary?Я попытался избавиться от версии BIN, но затем приложение сообщило мне, что сборка не найдена.

Спасибо. Я новичок в ASP.NET, поэтому надеюсь, что этот вопрос имеет смысл.

1 Ответ

0 голосов
/ 23 сентября 2011

Вы пытались просто удалить вызов зависимого узла, который указывает на каталог MyLibrary? Лично я думаю, что имеет больше смысла использовать каталог bin, так как это стандартная практика и дополнительная настройка не требуется.

...