[英]Source Not Available on Fody decorated methods
我有以下情況:
其中ProjectA
是一個簡單的 class 庫, 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 window :
有沒有辦法:
我試過了:
Weaver.cs
方法( [DebbugerNonUserCode]
、 [DebbugerStepThrough]
、 [DebbugerHidden]
...)ProjectB
Full
使用:
據我所知,VS 團隊,其實目前還沒有解決這個問題。 我自己試過這個,甚至禁用反匯編也沒有解決它。
Visual Studios 有一個擴展來禁用“源不可用”window,但是單步執行代碼看起來就像 Visual Studio 會拒絕執行此操作(除非您單擊多次,直到到達第一種方法)。
Visual Studio 開發人員社區頁面中的一個線程在此處。
“禁用無可用源選項卡”擴展在這里,您也可以在 Visual Studio 中通過單擊“ Extensions
”選項卡、“ Manage Extensions
”來搜索它,然后搜索“禁用無可用源選項卡”,然后單擊“安裝”。
在 Visual Studios 對此做任何事情或有更好的擴展之前,我的建議是在調用堆棧更深處設置一個斷點(例如,在Init(object instance, MethodBase method, object[] args)
處設置斷點)。
新版本的MethodDecorator
weaver ( v. 1.1.1 ) 已經發布,感謝 Tom Englert 解決了這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.