Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

使用库后,如果运行中修改代码,程序热重载功能会报错 #37

Closed
yangbocheng opened this issue May 8, 2023 · 10 comments
Labels
enhancement New feature or request wontfix This will not be worked on

Comments

@yangbocheng
Copy link

这个库真是宝藏,作者nb。
但是使用中发现一个小问题: 使用了库后,会导致项目的热重载功能失效。请问有无解决办法,(没有也问题不大)

image

@inversionhourglass
Copy link
Owner

感谢反馈,这个之前有遇到过,我还以为是更新VS后导致的,没想到是肉夹馍的导致的,这个要抽空研究一下了,可能暂时无法修复

@inversionhourglass inversionhourglass added the bug Something isn't working label May 8, 2023
@yangbocheng
Copy link
Author

感谢回复。
补充下 热重载失败后在错误栏有这个提示
image

@CodorMonkey
Copy link

在Rider中使用也出现了这个错误,.NET7,Rougamo.Fody 1.4.1
image

@inversionhourglass inversionhourglass added enhancement New feature or request and removed bug Something isn't working labels Oct 6, 2023
@inversionhourglass
Copy link
Owner

这个问题应该跟 #36 属于同类问题,解决 #36 应该就能解决。但目前还没有时间在2.0版本完成支持(可以看我在 #36 中的回复),将在后续版本中修复。

@bxjg1987
Copy link

这个问题应该跟 #36 属于同类问题,解决 #36 应该就能解决。但目前还没有时间在2.0版本完成支持(可以看我在 #36 中的回复),将在后续版本中修复。

我2.0 也是这个错误,自定义的切面的 调试可以进入,热重载提示上面兄弟的截图

@zhaxg
Copy link

zhaxg commented Apr 13, 2024

https://github.com/pamidur/aspect-injector 这个不会影响热重载,但是没有肉夹馍好用,接口拦截也不好

@zhaxg
Copy link

zhaxg commented Apr 25, 2024

有进展了么?

@inversionhourglass
Copy link
Owner

有进展了么?

没有,目前主要着手解决 #36,之前以为是同类问题,现在看来并不是。等 #36 解决之后会回看这个问题,如果好解决就跟 #36 同一个版本修复,不好解决就延期到下一个大版本

@inversionhourglass inversionhourglass modified the milestones: 3.0.0, 4.0.0 Apr 29, 2024
@inversionhourglass
Copy link
Owner

各位,遗憾的通知,肉夹馍将不会支持热重载,理论上静态代码织入的库都无法实现热重载。

@zhaxg 所提及的库其实也没有支持热重载,你们可以试试,对于修改了代码的方法,他的切面代码将无法触发。

热重载的大概原理是,在启动调试时监控代码文件,在代码文件修改时进行局部编译然后修改对应方法IL,静态代码织入是在编译时一次性修改方法IL,无法在热重载发生时再次触发。所以类似 aspect-injector 这种看似支持热重载的库,其实在热重载发生时会导致AOP代码全部被移出。

如果各位发现有静态AOP库能实现热重载的,可以再次开启该issue

@inversionhourglass inversionhourglass closed this as not planned Won't fix, can't repro, duplicate, stale Jun 3, 2024
@inversionhourglass inversionhourglass added the wontfix This will not be worked on label Jun 3, 2024
@inversionhourglass inversionhourglass removed this from the 4.0.0 milestone Jun 3, 2024
@bxjg1987
Copy link

bxjg1987 commented Jul 1, 2024

#if !DEBUG
[MyInterceptor]
#endif
public void xxx()
{

}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

5 participants