У меня есть простой атрибут обработки исключений. Проблема заключается в том, что мы используем этот атрибут в общем проекте и создаем зависимость от всех наших проектов. Как мы можем удалить зависимость Postsharp от общего проекта и ввести Postharp с помощью Autofac.
Скорее всего, использование Autofac не применимо.
Если вы применяете аспекты с использованием атрибутов, вам понадобится ссылка PostSharp.dll, потому что она определяет базовые классы вашего аспекта.
Но вы можете добавлять аспекты, используя файл конфигурации xml на уровне проекта:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.postsharp.org/1.0/configuration"
xmlns:m="clr-namespace:MyAspectLibrary;assembly:MyAspectLibrary">
<Multicast>
<m:MyAspect AttributeTargetTypes="MyProject.Class1" AttributeTargetMembers="Method1" />
</Multicast>
</Project>
Файл должен иметь то же имя и должен быть помещен в ту же папку, что и файл csproj с расширением psproj (здесь MyProject.psproj
).
В этом случае вы можете удалить ссылку на PostSharp.dll из MyProject
. Он должен по-прежнему ссылаться на MyAspectLibrary
.
Изменение: обратите внимание, что MyProject
по-прежнему обрабатывается PostSharp. См. PostSharp.targets и связанные строки в файле csproj.