如何在另一个项目中引用Fody MethodDecorator



我正在尝试使用Fody MethodDecorator来记录多个项目中的方法进入/退出。我在visualstudio中创建了一个项目,并实现了IMethodDecorator接口,如Fody MethodDecorator项目中ReadMe.md中所述。

Fody MethodDecorator在我实现IMethodDecorator接口的一个项目中工作得很好,我可以记录方法入口/出口。但是,当我试图通过添加对我的第一个项目的引用来记录其他项目中的方法进入/退出时,就不会记录任何其他项目。

我已经创建了一个github存储库,其中有一个简单的工作示例来展示这个问题,请单击此处获取链接。

还有其他人也有同样的问题,比如3年前的这篇帖子。但该帖子中的解决方案是将Fody和MethodDecorator nuget包添加到所有项目中。我已经将两个nuget包都添加到了所有项目中。我还将FodyWeavers.xml添加到所有项目中。

如果你想知道我的代码是什么样子的,只需查看git repo即可。为了让方法进入/退出的日志记录在其他项目中发挥作用,我还需要做什么吗?

我想简单地添加对我的第一个项目的引用,并重用第一个项目中的方法decorator。我使用的是.Net 4.8、Fody 6.5.3和MethodDecorator.Fody 1.1.1。

编辑如果您下载存储库并得到错误:尝试对"$(MsBuildMajorVersion)";评估这显然是由于Visual Studio中的一个错误,可以通过重新启动来克服。

为了让Fody.MethodDecorator在其他项目中工作,您需要添加模块CCD_ 1。

我的建议是在每个项目中创建一个接口,如下所示,并确保您的类继承自该接口。(通过这种方式,您只在项目中的一个位置添加了模块)

[module: Interceptor]

public interface IInterceptor
{
// no methods here.
// the interface is used only to register the Interceptor attribute at the module level.
}
public class SomeClass : IInterceptor
{
[Interceptor]
public void SomeMethod()
{
}
}

不是这个问题的答案,但我最终切换到了MethodBoundarySpect.Body。这是一个nuget包,它做的事情与MethodDecorator.Fody相同,并且有一个您以几乎相同的方式实现的接口。

我通过引用我只在其中一个项目中创建的属性,让MethodBoundaryspect.Fody在多个项目中工作。您仍然需要添加nuget包MethodBoundaryspect.Fody和Fody,还需要将FodyWeavers.xml文件添加到每个项目中。

相关内容

  • 没有找到相关文章

最新更新