2017-07-19 2 views
0

セットアップNugetの属性コードをデバッグする方法は?

私が作成した属性を持つメソッドがあります。私は、nugetパッケージにデバッグしたいときのように、属性をnugetパッケージにパックしました(デバッグシンボルモード)。

がどのように私は、この属性にステップインすることができます。質問?属性コードに他の「ステップイン(step into this)」属性を入れる必要がありますか?私は、私のデバッグからDebuggerStepThroughAttributeを停止するという属性を見つけましたが、デバッグ時に明示的に停止することはできません(魔法はもちろん、通常は必要ありません)。

これを十分に説明していただければ幸いです。

編集(詳細)

ヨルダンは方法でGetCustomAttributesを呼び出すことを示唆したが、それは(私の場合は、少なくとも)オプションではありません。私の属性はAPIコールでトークン検証を行っているので、属性内のコードがそのアクセスを拒否した場合、メソッドには許可されません(401)。そしてまた、ブレーキポイントをナゲットパッケージに入れられないので、そのコードに入ることができる必要があります。

編集2(最後に...コード)

だから、最終的にはコードがあります..私は、私は1つを必要だと思うdid'tが、ここで我々は:-)です。

デバッグできるようにしたいコードがある場所で自分の属性を実装しました。 MSDNによると、この[TokenAuthenticate]

+0

属性は装飾であり、反映なしで実行を変更しません。どのような属性を使用していて、正しく使用していますか?関連するフレームワークなしで装飾されたクラスをインスタンス化しようとすると、何も起こりません。 –

+0

@MatthewWhited私はコードで質問を更新しました。私はこれを正しく使っていると確信しています。この長い時間を過ごしてきましたが、ナゲットパッケージで自分の属性を持つことは一度もなく、コードにデバッグする必要がありました。私は、ソリューションにナゲットプロジェクトをインポートするだけで、デバッグをうまくやることができます。 – Sturla

答えて

0

のようなメソッドやクラスに行く

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 
    } 
} 

この属性は、ちょうど、Attributesは遅延的にインスタンス化されています

それは、これらの属性のオブジェクトであることに注意することが重要です が遅延してインスタンス化されました。つまり、 GetCustomAttributeまたはGetCustomAttributesを使用するまでインスタンス化されません。また、毎回 がインスタンス化されます。 GetCustomAttributesを2回連続して呼び出すと、2つの 異なるObsoleteAttributeのインスタンスが返されます。あなたがそれらにステップする必要がある場合は

あなたは、問題の種類にGetCustomAttributesを呼び出し、Attribute内のブレークポイントを置くことによってこれを行うことができるはずです。

+0

私はそれほどフォローしていません。どこでGetCustomAttributesを呼びたいですか?もし私がその属性を持っているメソッドでそれを行うのであれば、それは遅れてしまいます。私はそれを反映するために私の質問を更新します。 – Sturla

+0

@Sturla上記のコードを見ると、そこにブレークポイントを置いてそこからステップインしようとするコントローラがありますか? – Jordan

+0

コントローラがあり、この属性が一番上にあります。コンストラクタからF11キーを押しても、属性コードは決してヒットしません。そして、ナゲットパッケージがデバッグでビルドされていることを二重に確認しました。 – Sturla

関連する問題