2017-07-19 45 views
0

設置如何調試來自nuget的屬性代碼?

我有一個方法,我創建它的屬性。我已經將屬性打包到nuget包(調試符號模式)中,就像我想要調試到nuget包時一樣。

問題

我怎樣才能踏進這個屬性?我是否需要將其他「步入此屬性」放入我的屬性代碼?我只發現了停止我調試DebuggerStepThroughAttribute的屬性,但沒有什麼可以讓我在調試時明確停止(當然你不需要正常)。

我希望我已經解釋得很好。

編輯(詳細信息)

喬丹建議調用該方法GetCustomAttributes但不是(在我的情況下,在至少)的選項。我的屬性正在對API調用進行標記驗證,因此如果屬性中的代碼拒絕訪問,則不允許(401)該方法。而且我也不能把制動點放入nuget包裝,我需要能夠進入該代碼。

編輯2(最後...代碼)

所以最後有代碼..餘did't覺得我需要一個,但我們在這裏:-)。

我已經實現了我自己的屬性(就像你可以做的那樣),在那裏有我希望能夠調試到的代碼。

public class TokenAuthenticate : ActionFilterAttribute, IAuthenticationFilter 
{ 
    public override void OnActionExecuting(HttpActionContext actionContext) 
    { 

     base.OnActionExecuting(actionContext); 
    } 

    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) 
    { 
     base.OnActionExecuted(actionExecutedContext); 
    } 

    public bool AllowMultiple => true; 

    public async Task AuthenticateAsync(HttpAuthenticationContext context, CancellationToken cancellationToken) 
    { 
     //... where I want to debug into 
    } 
} 

那麼這個屬性只是那張方法或類這樣的[TokenAuthenticate]

+0

屬性是裝飾物,不會在沒有反射的情況下改變執行。你使用了什麼屬性,並且你正確使用它?如果你只是試圖在沒有相關框架的情況下實例化裝飾類,就不會發生任何事情。 –

+0

@MthetheWWhited我用代碼更新了問題。我相當肯定我正確使用這個。一直在做這麼長時間,但從來沒有我的屬性在nuget包中,需要調試到代碼中。如果我只是將nuget項目導入到我的解決方案中,我可以很好地進行調試。 – Sturla

回答

0

MSDNAttributes懶洋洋地實例:

重要的是要注意,這些屬性的對象是非常重要的懶洋洋地實例化了 。也就是說,只有在使用 GetCustomAttribute或GetCustomAttributes之後,它們纔會被實例化。它們每次都被實例化爲 。連續調用GetCustomAttributes兩次將返回兩個 ObsoleteAttribute的不同實例。

如果你需要踏進他們,你應該能夠通過調用對有問題的類型GetCustomAttributes,並把一個破發點的Attribute內做到這一點。

+0

我不太關注。您希望我在哪裏調用GetCustomAttributes?如果我在具有屬性的方法中做到了這一點,我會更新我的問題以反映這一點。 – Sturla

+0

@Sturla看看上面的代碼,是否有一個控制器,你可以把一個斷點,然後嘗試從那裏通過? – Jordan

+0

有一個控制器,它的頂部有這個屬性,即使我從構造函數中獲得F11,我也從未打過屬性代碼。我做了更加確認nuget包是在調試中構建的。 – Sturla