首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Metalama的LinqPad 7 C# (.NET Core/5/6)的测井参数值

带有Metalama的LinqPad 7 C# (.NET Core/5/6)的测井参数值
EN

Stack Overflow用户
提问于 2022-04-09 14:01:11
回答 1查看 129关注 0票数 1

据我所知,代码需要编译(与编译代码的方式相同),OverrideMethodAspect才能工作。但是LinqPad用Roslyn编译了代码。

对于如何让OverrideMethodAspect处理在LinqPad中定义的方法,有什么想法吗?

如果有人感兴趣的话,这是用于VS的工作代码。(只需添加nuget中的Metalama.Framework包-确保选中了“包含预发布”)

代码语言:javascript
复制
using Metalama.Framework.Aspects;

public class Program
{
    public static void Main(string[] args)
    {
        TestMethod("foo");
    }

    [SimpleLog]
    public static void TestMethod(string x)
    {
        Console.WriteLine("Hello, " + x);
    }
}


public class SimpleLogAttribute : OverrideMethodAspect
{
    public override dynamic OverrideMethod()
    {
        Console.WriteLine($"Entering Method - first arg value is: {meta.Target.Method.Parameters.First().Value}");

        try
        {
            return meta.Proceed();
        }
        finally
        {
            Console.WriteLine($"Leaving {meta.Target.Method}");
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-04-11 02:39:55

据我所见,Metalama在MSBuild级别挂钩,用自己实现方面重写的版本替换Roslyn程序集。LINQPad不使用MSBuild,所以它需要知道并使用Metalama的Roslyn版本,并明确使用它。如果Metalama的Roslyn程序集与标准的Roslyn程序集是二进制兼容的,那么这可能是可行的,尽管在处理.NET Core/5/6中的程序集解析、隔离和卸载时仍然存在(可能是棘手的)问题。到目前为止,这些问题已经阻止了在LINQPad 7中使用源生成器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71808745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档