问题标签 [postsharp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 在没有 PostSharp MSI 的目标机器上使用 PostSharp 部署多个项目
我们有几个项目挂在一个解决方案、一个网站和一些服务上。每个都将使用 PostSharp,但由于我们不想使用 MSI 在目标机器上安装 PostSharp,我们可以部署相关的 PostSharp 依赖项套件,如 Scott Wojan 的这篇博文中所述。
http://geekswithblogs.net/wojan/archive/2009/01/14/128673.aspx
此示例适用于单个项目。
问题是,如何只将一组依赖项部署到目标机器并让每个项目从不同的目录引用它们?
c# - 减少 PostSharp 编译时间开销
我们最近在我们的代码库中引入了PostSharp,我们的 ASP.NET MVC 项目的编译时间已经翻了一番到四倍。我们的解决方案中有大约 3 个 MVC 项目和大约 8 个类库项目。
显然,由于 PostSharp 正在修改 MSIL 代码,因此会有相关的开销。但是 2 到 4 倍的开销是相当大的开销。
这是 PostSharp 的典型情况吗?
c# - 如何真正快速地得到这个?
我有一个框架,允许用户对特定数据源(足球经理 2010 游戏数据库,对于那些感兴趣的人)进行查询。
在这个框架中,我的框架可以运行两种不同的模式:实时模式和缓存模式。我希望使用这个框架的用户能够通过调用不同的构造函数(例如new Context(Mode.Cached)
)来进行切换。这应该是用户应该进行的唯一切换,因此他仍然可以进行所有相同的 Linq 调用,但是当他的应用程序更适合时才使用缓存模式。清除。
我决定使用 PostSharp 应该是我的最佳选择,因为:
- 在每个属性上创建一个方面(已经被属性修饰过)
- 在这方面,检查我们是否处于
Cached
或Realtime
模式 - 从内存或缓存中返回值
那行得通。但!速度不够好。在 90.000 个对象上执行以下操作时:
它只需要 63 毫秒。(ReadFromBuffer 是一个高度优化的函数,它接受byte[], int, Type
并返回object
),考虑到大量的对象,63 ms 是非常合理的。
但!在 PostSharp 中,我使用这个实现了相同的功能:
现在我称之为使用
而且它需要782 毫秒,超过 10 倍!
我将方面创建为:
并且该物业被装饰得像
我怎样才能让它表现良好?!
c# - 如何使用 PostSharp 将异常转换为另一个异常?
我想在一些方法的主体周围自动添加以下代码:
我正在使用 PostSharp 1.0,这就是我目前所做的:
我的问题是我可以OnException
在堆栈中看到 PostSharp 调用。
避免这种情况并获得与手动实现异常处理程序相同的调用堆栈的良好做法是什么?
c# - PostSharp:派生类的构造函数上的 OnMethodBoundaryAspect
我有一个方面可以在异常时向控制台写入一些内容。我有一个在其构造函数上引发异常的基类,以及一个在其构造函数上具有方面的派生类。
我希望构造函数上的派生类方面会捕获基类异常,但它不会。
这是设计使然吗?这是一个错误吗?还是我做错了什么?
这是示例代码(控制台应用程序):
输出是:
Main 上捕获的异常。
postsharp - AOP/PostSharp 和脏检查 - 以更好的方式获取属性名称?
我的方面:
我已将此 NotifyPropertyChangedAttribute 应用于整个类,因此我可以处理属性更改,一切都按预期工作。
但我想知道被更改的属性的名称(所以我可以将脏属性的名称存储在某个集合中)。我想使用 LocationInterceptionArgs::Location 但我读到了这个:
有没有其他方法可以在我的方面获取受影响属性的名称,但不使用反射或其他运行时开销很大的代码?
任何想法(或更好的例子)?也许我可以以其他方式实现它?我只需要一些方法在运行时识别属性,即使没有名称 - 只是一些值,我可以使用它稍后在某些 Dictionary<> 中找到属性......
谢谢。
debugging - PostSharp , PDB 调试和引用程序集
将 PostSharp 与具有正确 PDB 信息(使用 chkmatch 检查)的引用程序集一起使用时,调试信息在 VStudio 构建和编译后过程中丢失似乎很奇怪,并且在 vstudio 构建后使用 chkmatch 比较程序集时出现以下错误.
错误:在可执行文件中找不到调试信息。
所以它不会介入调试这个程序集。
Post Sharp 是否在不破坏 PDB 位置偏移信息的情况下正确回写程序集,因为我在 PostSharp 使用十六进制编辑器写回 DLL 时没有看到有效的偏移信息,对此有什么解决方法?
aop - Postsharp:Aspect 的方法签名
我可以指定 OnMethodInvocationAspect 只能应用于特定的方法签名,例如 "int methodname(ClassA obj)" 吗?
c# - 为什么 PostSharp 会导致我的项目构建失败?
我正在做一个单元测试项目。这个项目有大约 2600 个测试类,每个类平均有 15 个单元测试。我不确定我需要向这个项目添加多少类才能重新创建下面提到的错误,但我知道向项目添加大量(我尝试了 500 个)文件与它直接相关。如果我删除一些文件,我就可以构建。
编译错误
unknown_location 错误 PS0034:PostSharp:ILASM 退出并返回代码 255。工具输出:
此应用程序已请求运行时以不寻常的方式终止它。请联系应用程序的支持团队以获取更多信息。
是什么导致这种情况发生?
编辑:请注意,测试项目不直接使用自定义 PostSharp 属性可能很重要。换句话说,在所有测试类中,我都没有针对 PostSharp dll 的 using 指令。但是,它们在测试正在测试的类中使用。
licensing - PostSharp 1.5 许可
我们正在评估 PostSharp 的日志记录,以便在我们的项目中使用(在 .Net 中实现)。目前它正在生产环境中运行。与 PostSharp 混合会引发许可问题吗?据我所知,它是部分免费的。我错了吗?如果有的话,我们会面临哪些未来的许可问题(即 PostSharp 是否计划在未来的版本中不免费)?