我有一个简单的异常处理属性。问题是我们在公共项目中使用该属性,并且它创建了对所有项目的依赖。我们如何从公共项目中删除Postsharp依赖项并使用Autofac注入Postsharp。
答案 0 :(得分:0)
很可能无法使用Autofac应用方面。
如果使用属性应用方面,则需要引用PostSharp.dll,因为它定义了方面的基类。
但您可以add aspects使用项目级别xml configuration文件:
<?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>
该文件必须具有相同的名称,并且必须与带有psproj扩展名的csproj文件放在同一文件夹中(此处为MyProject.psproj
)。
在这种情况下,您可以从MyProject
删除对PostSharp.dll的引用。它仍然需要从MyAspectLibrary
引用。
编辑:请注意,MyProject
必须仍由PostSharp进行后期处理。请参阅csproj文件中的PostSharp.targets和相关行。