如何在其他项目中引用Fody MethodDecorator实现方法日志复用?
解决方案
你需要完成以下额外配置即可解决跨项目复用装饰器无日志输出的问题:
- 首先确认你定义方法装饰器特性的类库项目中,装饰器类的访问修饰符为
public,不要使用internal,否则外部项目无法识别到该特性。同时要给该装饰器类添加[Serializable]特性,这是MethodDecorator的强制要求。 - 所有需要使用该装饰器的项目,都要在
FodyWeavers.xml中显式指定装饰器所在的程序集,配置示例如下:
<Weavers> <MethodDecorator> <IncludeAssemblies> <!-- 替换为你定义装饰器的项目的程序集名称 --> <Item>MyLoggingLib</Item> </IncludeAssemblies> </MethodDecorator> </Weavers>
- 如果希望实现仅引用类库即可复用、不需要每个项目手动安装Nuget包,可以在装饰器类库的
.csproj文件中修改Nuget引用的配置,将依赖设置为可传递:
<ItemGroup> <PackageReference Include="Fody" Version="6.5.3" PrivateAssets="none" /> <PackageReference Include="MethodDecorator.Fody" Version="1.1.1" PrivateAssets="none" /> </ItemGroup>
- 所有配置完成后,清理解决方案的所有缓存,删除各项目的
bin、obj文件夹后重新全量编译,确保Fody的IL织入逻辑正常触发。
内容的提问来源于stack exchange,提问作者FluffyBike
相关产品推荐
相关产品推荐

