Мы создаем общие библиотеки, которые в основном обертываются над Microsoft Application Blocks (кэширование, ведение журнала и т.д.).
Я пытаюсь сделать эту библиотеку доступной для нескольких приложений ASP.Net.
Эта библиотека развернута в общей папке.
Я создал специальный контейнер, который будет использоваться всем приложением ASP.net для использования любой службы (ведение журнала, кеширования) и т.д. из библиотеки. Расположение папки библиотеки используется контейнером для поиска библиотеки DLL.
Вся конфигурация для Блока приложения находится в app.config, который динамически загружается блоками Application.
Проблема, с которой я сталкиваюсь, заключается в том, что Configuration пытается загрузить блок приложения, предполагая, что DLC-блоки Application Block будут храниться в GAC, но по какой-то причине я не могу разместить сборки блоков приложений в GAC. Я имею их в той же папке, что и библиотека Dll.
Из-за этого библиотека Dll библиотеки не может загрузить блок приложения. Я думаю, что один из способов решения этого вопроса - указать элемент CodeBase в разделе времени выполнения в Machine.Config. Я хотел бы знать, есть ли лучший способ, где я могу указать расположение DLL-блоков приложений в файле конфигурации.
Любые мысли?
Привет,
В .NET вы не можете (легко) обмениваться библиотеками между несколькими приложениями, если они не размещены в GAC.
AFAIR, элемент CodeBase предназначен только для указания конкретного COM-компонента, поэтому он существует для поддержки COM-взаимодействия. Тем не менее, вы можете экспортировать свою библиотеку .NET в виде COM-компонента и ссылаться на нее через COM-взаимодействие, но я бы не рекомендовал его, потому что накладные расходы на производительность, а также накладные расходы на обслуживание. Помните адский ад? То, что этот подход приведет вас.
Вы должны поместить свои сборки в GAC, если вам нужно поделиться ими между несколькими приложениями.
В противном случае вам нужно будет развернуть их с каждым приложением.
Это единственные варианты с .NET.
По какой-то причине я не могу разместить сборки блоков приложений в GAC
Ent Lib 4.x поставляется с двумя версиями DLL. Одна версия имеет сильное имя и может быть добавлена в GAC; другой - нет и не может. Если вы используете версию 4.x, убедитесь, что вы пытаетесь добавить файлы из C:\Program Files\Microsoft Enterprise Library 4.1 - October 2008\Bin, а не из C:\EntLib41Src\bin, и вы должны быть в порядке. Если нет, можете ли вы сообщить нам, в чем проблема - GAC - это путь, IMO.