- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。
9年前关闭。
有没有人用过Postsharp生产环境中的AOP框架?有什么陷阱吗?为了做一些日志记录等,Postsharp 可以与 Log4Net 结合使用吗?
任何有关将 Postsharp 与 Web 应用程序和/或 Log4Net 一起使用的教程都将受到高度赞赏。
最佳答案
我和另一位队友在几个正在生产并且已经使用了几个月的项目中以不同的方式使用 PostSharp。例如,在一种情况下,我使用它来记录方法参数值以防出现异常。 PostSharp Laos(包含在 PostSharp 中)是一种易于使用的注入(inject)方法调用的方式(例如,在方法进入、退出和异常时),您可以轻松地将日志调用添加到 log4net 注册的记录器。
它增加了构建时间,足以稍微改变我的构建习惯,但对于它提供的好处来说肯定不会太多,IMO。在编写代码时,您可能希望将其从本地构建中排除,这很容易做到,因此您可以继续频繁快速地构建,然后将其包含在构建服务器等中。
这是 good PostSharp tutorial来自 Gael(PostSharp 的创建者)......虽然它很旧,但很高兴看到它是贯穿始终的。在我迄今为止遇到的控制台、winforms、WPF 或 WebApp 中使用它确实没有区别。
我还要说,一旦您弄清楚如何将老挝方面添加到项目中,重复练习就非常容易。您将方面应用到多少程序集/类与 PostSharp 添加到您的构建中的时间之间存在关系。因此,您甚至可以稍微控制构建时间问题。
至于代码,我对 PostSharp 的工作效果印象非常深刻......它从未搞砸过构建,使程序集无效或以其他方式混淆代码。我什至在 ASP.NET 应用程序中使用过它,包括代码覆盖率和性能检测(因此它与 MS 的 Assembly 检测工具配合得很好)。
总而言之,我会定义。建议您尝试一下以满足您的 log4net 要求。
关于.net - 有 Postsharp 生产经验的人吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/417163/
我有一个包含许多项目的解决方案,我想禁用 Postsharp 进行调试构建,以减少本地开发人员的构建时间。有没有办法在不编辑每个项目文件的情况下做到这一点? 我知道这听起来像是一个坏主意,但我们只使用
我的 CI 构建服务器遇到问题,其中 PostSharp 导致构建失败,并显示以下消息:程序集“yada-yada.dll”使用未经许可的功能(基本功能)。 [...]。我们使用的是当前版本的 Pos
我可以指定 SkipPostSharp 常量来确保项目从 PS 进程的项目列表中排除。但我想反过来做。我希望 PS 假设它不应该处理我没有明确告诉它的任何内容。 这可以实现吗? 最佳答案 项目被Pos
依赖注入(inject)在 Postsharp 中不起作用。如何使方面可测试?我真的想避免创建具体的类来记录我的方面。 我不希望在单元测试方法时运行方面。如果我正在测试一种方法,我不希望触发日志记录方
是否有可能在 Postsharp 的编译期间找到程序集的项目文件夹/项目文件或输出路径,例如,在 CompileTimeInitialize 期间,当正在构建程序集时? 最佳答案 您可以在编译期间通过
我正在尝试修改 Postsharp 附带的示例跟踪应用程序,以便将跟踪应用于我的命名空间中的所有类,而无需显式地将 [QuickTrace] 放在每个类的顶部。我附上了截图。我究竟做错了什么 ?右键单
根据推荐的 PostSharp 最佳实践,我在我的所有项目中都包含了 PostSharp。但是,我在其中一些程序集中没有任何方面或其他转换;他们只是引用了其他确实有使用方面的项目。 在构建时,我收到以
刚刚从 nuget 包安装了 Postsharp 2.1,然后安装了 Phil Haack 的 NullGuard 包。 当我在类或方法级别添加 [EnsureNonNullAspect] 方面时,我
你如何得到参数姓名 的一种方法。这些示例向您展示了如何获取 值 参数,但不是 姓名 .我想看到 parma = 99, parmb = 1。不仅仅是 99, 1。 using System;
假设我有一个方面实现 IInstanceScopedAspect我将这个方面应用于类型中的方法。使用 FormatterServices.GetUninitializedObject 创建对象时如何初
我正在努力理解为什么要使用后编译器,例如 PostSharp ,是否需要? 我的理解是,它只是在原始代码中插入代码,那么为什么开发人员不自己编写代码呢? 我希望有人会说它更容易编写,因为您可以在方法上
是否可以使用 PostSharp 拦截类构造函数和析构函数调用?我想为类创建事件实例计数器。 最佳答案 您可以在构造函数和析构函数上使用 OnMethodBoundaryAspect。请注意,默认情况
我有几个项目,希望在多个项目中应用方面。我像这样使用多播属性: [assembly:MyProject.Aspects.NotifiableObject( AttributeTargetAss
创建了一个简单的类来测试 PostSharp 中的 OnExceptionAspect。 [Serializable] [AttributeUsage(AttributeTargets.Method
我有一个 MethodInterceptionAspect(PostSharp) 的实现但是当我在重写 OnInvoke 方法时,args.Method 为 null,我需要知道方法返回值类型, 有人
我创建了一个小的方面层次结构。示例: public abstract class MyBaseAspectAttribute : Aspect, IAspectProvider { ... p
我喜欢在跟踪级别上记录一些 Postsharp 消息。不幸的是,记录到这个级别没有输出。所有其他级别都在工作。与控制台或 NLog 后端或当我从其他类登录时的行为相同。 如何启用跟踪级别? App.x
在开始之前,我想澄清一下,我目前对 AOP 术语的理解如下...... 方面是 AOP 等同于 OOP 中的类。 通知是 AOP 等价于 OOP 中的方法。 切入点是 AOP 等价于 OOP 中的“使
我偶然发现了 PostSharp 的一个不可思议的良好性能行为。为了评估速度,我写了一个小程序,它会执行一个函数指定的次数,如果启用了 PostSharp,它会生成和删除几百个字符串,就在内存中(非固
我正在使用 postsharp 1.5 和 OnMethodBoundaryAspect 处理一个方面。我希望我的方面默认具有以下行为: 1 - 如果在类级别使用属性,则方面仅应用于 PUBLIC 方
我是一名优秀的程序员,十分优秀!