Closed food4321 closed 1 month ago
这个配置现在是有的吗?
4.0版本开始就不支持了,这个只是3.0版本的过渡配置。内联织入在未使用async/await
语法的方法处理上容易让人误解,你可以看一下我3.0版本的博客 不同织入方法带来的影响
这个配置项能否继续支持,或者 可以选择 内联植入还是代理方式。 因为有的项目有可能都没有使用 async 方式。
为了支持 async / await 而 clone 一个新 $Rougamo_ 方法, 这本身就带来 clone是出错的几率 并且在触发异常时,StackTrace 追中 堆栈出现 $Rougamo (如果有嵌套) 将会出现大量的 没有必要的 $Rougamo StackFrame 这也带来了不方便。
或者像postsharp 一样 如果有async 的情况 重新定义 IAsyncStateMachine 类去处理,是否可行?
首先,非常抱歉新的方式中存在大量的bug给你们带来不好的使用体验。
支持两种织入方式对我来说就是双倍的维护工作量,肉夹馍的升级维护工作也并不像想象中那么轻松,确实也没有精力去维护两种织入方式。
代理织入解决的也不是使用了async语法的情况,而是没有使用async语法的情况,这个你可能需要仔细理解博客中举的例子。虽说确实有类似你这种情况几乎不使用异步和Task/ValueTask
,但现在异步已是主流,作为一个开源项目肯定更倾向于兼顾主流问题。同时代理织入也不仅仅用来解决async语法差异,其他一些功能也依赖这种实现方式,比如步入调试、异步切面等。
异常中的堆栈信息确实会显得有些臃肿,这个后续查一下有没有方式可以忽略部分堆栈信息吧,但也只能从这个方向来处理问题,不会考虑切回内联织入。
.NET发展多年,拥有各式各样的元数据类型和语法糖,肉夹馍确实难以全部覆盖,比如你反馈的几个问题P/Invoke、矩形数组、简单的try { throws } catch { throws }
,在Web开发中并不常见,所以非常依靠你们的反馈。
升级导致遇到各种之前不存在的问题,这个确实很抱歉,也很理解长此以往可能会让你们对肉夹馍失去信心,但也希望你们理解,IL底层项目存在一定难度,个人精力确实无法支持到所有的需求。希望你们能够继续给予支持,对于bug我会尽快修复,尽量少的影响到你们的工作进度和流程,非常感谢。
(配置的方式为修改
FodyWeavers.xml
文件中的配置)Originally posted by @inversionhourglass in https://github.com/inversionhourglass/Rougamo/issues/68#issuecomment-2094667061
Originally posted by @food4321 in https://github.com/inversionhourglass/Rougamo/issues/81#issuecomment-2345213330