我有以下情况:
whereProjectA
是一个简单的类库,并且ProjectB
是一个控制台应用程序。
ProjectA.Class1.cs
包含以下代码:
using System;
namespace ProjectA
{
public class Class1
{
public void A()
{
B();
}
[Weaver]
public void B()
{
Console.WriteLine("I'm in B()");
}
}
}
ProjectA.Weaver.cs
包含:
using MethodDecorator.Fody.Interfaces;
using System;
using System.Reflection;
namespace ProjectA
{
class Weaver : Attribute, IMethodDecorator
{
public void Init(object instance, MethodBase method, object[] args)
{
Console.WriteLine("Initialising");
}
public void OnEntry()
{
Console.WriteLine("Entry");
}
public void OnException(Exception exception)
{
Console.WriteLine("Exception");
}
public void OnExit()
{
Console.WriteLine("Exit");
}
}
}
控制台应用程序的 ( ProjectB.Program.cs
) 入口点包含:
using ProjectA;
namespace ProjectB
{
class Program
{
static void Main(string[] args)
{
var a = new Class1();
a.A();
}
}
}
并ProjectA.FodyWeavers.xml
包含:
<?xml version="1.0" encoding="utf-8"?>
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<MethodDecorator></MethodDecorator>
</Weavers>
如果我在里面放了一个断点Class1.A()
,并尝试单步执行( ),会弹出F11
以下Source Not Available窗口:
有没有办法:
- 防止调试器尝试进入编织器
- 告诉调试器 weaver 的源代码在哪里
我试过了:
- 仅启用我的代码
- 将属性添加到
Weaver.cs
方法 ([DebbugerNonUserCode]
,[DebbugerStepThrough]
,[DebbugerHidden]
...) - 将 Fody 引用添加到
ProjectB
- 将项目的构建调试信息设置为
Full
使用:
- Visual Studio 2019 社区版
- .NET 框架 4.7.2
- 福迪 6.2.0
- 方法装饰器.Fody 1.1.0