2017-07-19 63 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