簡體   English   中英

源在 Fody 裝飾方法上不可用

[英]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 的源代碼在哪里

我試過了:

  • 僅啟用我的代碼
  • 將屬性添加到Weaver.cs方法( [DebbugerNonUserCode][DebbugerStepThrough][DebbugerHidden] ...)
  • 將 Fody 引用添加到ProjectB
  • 將項目的構建調試信息設置為Full

使用:

  • Visual Studio 2019 社區版
  • .NET 框架 4.7.2
  • 福迪 6.2.0
  • 方法裝飾器.Fody 1.1.0

據我所知,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 解決了這個問題。

鏈接到 PR 254

鏈接到 GH 頁面中提出的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM