问题标签 [afterthought]

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.

0 投票
2 回答
1451 浏览

c# - 事后思考似乎不起作用,简单的代码

我编写了一段简单的代码来参与 Afterthought,但它不起作用,我不知道为什么。其中很大一部分来自其他 SO 问题:How to implement simple Property Amendment with Afterthought

它可以编译,但不会对输出的 exe 文件进行任何更改。我已经配置了构建后事件。构建输出:

最后在运行后从应用程序输出:

既未修改 HasChanged 属性,也未引发 NotImplementedException。我正在使用 Git 的最后一个资源。你有什么想法为什么它不起作用?

编辑:这是整个解决方案:SecondAmendmentTest.zip

0 投票
0 回答
83 浏览

class - 是否可以使用 Afterthought 修改类属性

我想知道是否可以在编译时使用 Afterthought 向类添加属性。我知道 PostSharp 可以做到这一点,但事后思考,我只能看到属性的属性修改。我想做这样的事情。

应该生成

我的用例是将类上的 StructLayout 属性和 FieldOffset 属性添加到我的类中的字段,以以特定方式强制执行内存布局。确切的布局规则由方面决定。

谢谢约翰

0 投票
1 回答
1807 浏览

.net - 构建完成后从 IntermediateOutputPath 复制 MSBuild

我正在使用Afterthought(类似于 PostSharp)通过修改输出程序集将构建后的更改应用于某些代码。目前,我的项目文件中有这样的内容(缩写):

基本上它是在说:在构建之后,使用 AfterThoughtTask 运行一个进程来使用 Amendments.dll 中的代码修改输出程序集。正如我所期望的那样,这工作得很好,并且 MyProject.dll 输出MyProject\bin\Debug\MyProject.dll被修改为附加代码。

然后我对我的项目文件进行了轻微的更改:

所以我所做的就是改变输出路径。现在我调试AfterThoughtTask,并在所有代码执行后下断点。当我在此断点处停止时,文件SomeOtherProjectLocation\bin\MyProject.dll(这是我打算修改的文件,位于我希望它所在的文件夹中)似乎已被修改(文件大小为 117kb,未修改时为 103kb)。在这一点上,事情似乎进展顺利。然后我释放断点,突然文件大小回落到 103kb,不知何故被原始未修改的文件替换。查看诊断构建报告,AfterThoughtTask是最后一个运行的任务,之后没有报告文件副本。

在同一断点处再次运行,我看到位于IntermediateOutputPath目录 (obj\Debug) 中的文件仍然是 103kb(未修改),所以我尝试查看是否是覆盖修改后的文件。当我处于断点时(任务执行结束,但在控制权交还给构建之前),我将IntermediateOutputPath目录中的文件重命名为 MyProject.dll_hidden。我没有收到任何错误,但我的文件不再被覆盖。

所以我只能假设文件是​​从IntermediateOutputPath目标文件的目录中复制的,但是构建日志似乎没有表明这一点,而且我不明白为什么改变OutputPath它会以这种方式发生,而不是它是如何发生的之前是默认的OutputPath。有人在这里有任何指导吗?提前致谢。

0 投票
1 回答
134 浏览

asp.net - 在 .NET 中使用 AOP 在 BCL 调用之前运行代码

我试图在 ASP.NET 应用程序中对 BCL 的每个函数调用之后/之前调用一个函数。

例如,当Server.MapPath被调用时,我想在该特定调用之后和之前调用我自己的函数。

是否有支持此功能的 AOP 库?PostSharp 或 Afterthought 可以做到这一点吗?

0 投票
1 回答
160 浏览

c# - 在 Afterthought 中使用带参数的属性

假设我们有这样的属性:

在这样的上下文中使用:

如何Level在我的BeforeAfter方法中使用该属性?似乎您只能使用流利的界面,但因此我无法引用该LogScope属性。

0 投票
0 回答
57 浏览

c# - 在编译阶段添加代码

我想要一个简单的

我想获取类参数名称及其值,因此请检查 x 是否为 5 或 5。

这可以用 roslyn 完成还是我需要事后考虑。