4

这是一个关于 PostSharp 使用的假设问题。

我假设如果由于任何原因错过了构建的 PostSharp 部分,这些属性将被忽略并且构建的程序集仍然可以运行。如果我用方面实现安全性,这将是一个大问题。

如何在运行时确认构建的 PostSharp 阶段发生并且我的方面在程序集中?

4

2 回答 2

6

PostSharp.Post.IsTransformed您可以在运行时进行评估。如果程序集已转换,则对该属性的调用将更改为仅常量true。由于属性本身总是返回false,因此您可以知道调用的程序集是否PostSharp.Post.IsTransformed已被转换。

于 2012-11-23T10:36:59.053 回答
0

一方面,您将在构建期间或之后在输出窗口中看到它(类似: message : PostSharp complete -- 0 errors, 0 warnings, served in 1073 ms),另一方面,您可以使用 .net 反射器或类似工具(JetBrains dotPeek 是免费的)检查您的程序集,因此 postsharp 正在编织您的方面构建过程中的 IL 代码。

可能还有更多选项,例如检查 .pdb 文件。这足以满足您的需求吗?

于 2012-11-23T10:16:51.220 回答