使用Postsharp将方面应用于部件的风险

本文关键字:应用于部 Postsharp 方面 使用 | 更新日期: 2023-09-27 18:00:12

我想使用postsharp将方面应用于第三方程序集,主要记录本博客中描述的错误http://programmersunlimited.wordpress.com/2011/07/27/applying-aspects-to-3rd-party-assemblies-using-postsharp/.这个功能没有文档记录,postsharp也没有正式支持。我不确定它可能造成什么样的风险。我知道风险将取决于我的集会。在采用这种方法之前,我需要考虑哪些一般风险?感谢

使用Postsharp将方面应用于部件的风险

通过使用PostSharp的这一不受支持的功能,您可能会面临在未来版本中删除它或在没有向后兼容性的情况下更改它的风险。另一个重要的风险是,如果你遇到问题,你将无法从官方渠道获得帮助。

基于这些风险,您需要决定是否希望您的项目依赖于该功能。

如果您的主要目标是记录对引用的第三方程序集的调用,那么也可以使用另一种方法来实现。您可以在自己的程序集中应用日志记录属性,并将AttributeTargetAssemblies属性设置为目标第三方程序集的名称。

[assembly:Log(AttributeTargetAssemblies="Some.Referenced.Assembly", AttributeTargetTypes="...", ...)]

使用这种方法,PostSharp不会修改目标程序集,而是修改从您自己的程序集到目标程序集的调用。

更新:从PostSharp 4.3开始,官方支持将方面应用于现有程序集。您可以在文档中找到有关此功能的更多信息:http://doc.postsharp.net/command-line

"在采用这种方法之前,我需要考虑的一般风险是什么?"

使用PostSharp的另一个风险/烦恼是它们经常更新。

一个例子。。。

  • 您有一个包含多个项目的解决方案
  • 您将当前的PS nuget软件包应用于它们
  • Postsharp发布VS的更新并安装
  • 然后,您必须将PostSharp包含到解决方案中的现有或新项目中(PostSharp向导会提示此更新)

结果是postsharp的新版本应用于该项目,现在您在postsharp版本12和13上分别有一些项目。当您进行部署时,应用程序会因为版本不匹配而崩溃。