Развернуть блок приложения Microsoft в общей папке - PullRequest
2 голосов
/ 27 октября 2009

Мы создаем разделяемые библиотеки, которые в основном являются оболочкой для блоков приложений Microsoft (кэширование, ведение журнала и т. Д.).

Я пытаюсь сделать эту библиотеку доступной для нескольких приложений ASP.Net.

Эта библиотека развернута в общей папке.

Я создал собственный Контейнер, который будет использоваться всеми приложениями ASP.net для использования любых служб (ведение журнала, кэширование) и т. Д. Из Библиотеки. Расположение папки библиотеки используется контейнером для поиска библиотеки библиотеки.

Вся конфигурация для блока приложения находится в файле app.config, который загружается блоками приложения автоматически.

Проблема, с которой я сталкиваюсь, заключается в том, что Конфигурация пытается загрузить блок приложения, предполагая, что Dll блока приложения будет храниться в GAC, но по какой-то причине я не могу поместить сборки блока приложения в GAC. У меня они в той же папке, что и библиотека DLL.

Из-за этого библиотека DLL не может загрузить блок приложения. Я думаю, что один из способов решения этой проблемы - указать элемент CodeBase в разделе времени выполнения в Machine.Config. Я хотел бы знать, есть ли лучший способ, где я могу указать расположение DLL-файлов блоков приложения в файле конфигурации.

Есть мысли?

С уважением,

Ответы [ 2 ]

2 голосов
/ 27 октября 2009

В .NET вы не можете (легко) обмениваться библиотеками между несколькими приложениями, если они не размещены в GAC.

AFAIR, элемент CodeBase предназначен только для указания на определенный компонент COM, поэтому он существует для поддержки взаимодействия COM. Тем не менее, вы могли бы экспортировать свою библиотеку .NET в качестве COM-компонента и ссылаться на нее через COM-взаимодействие, но я бы не рекомендовал это, потому что это приводит к снижению производительности и затратам на обслуживание. Помните дьявол Вот куда этот подход приведет вас.

Вы должны поместить свои сборки в GAC, если вам нужно поделиться ими между несколькими приложениями.

В противном случае вам потребуется развернуть их вместе с каждым приложением.

Это единственные опции с .NET.

1 голос
/ 27 октября 2009

По какой-то причине я не могу поместить сборки блока приложения в GAC

Ent Lib 4.x поставляется с двумя версиями DLL. Одна версия имеет строгое название и может быть добавлена ​​в GAC; другой нет и не может. Если вы используете версию 4.x, убедитесь, что вы пытаетесь добавить файлы из C: \ Program Files \ Microsoft Enterprise Library 4.1 - октябрь 2008 \ Bin, а не из C: \ EntLib41Src \ bin, и вам следует быть в порядке. Если нет, вы можете сообщить нам, в чем проблема - GAC - это путь, ИМО.

...