部分类调试

13

我已为我的xsd自动生成的类创建了一个partial class。问题在于调试这个partial class。断点不被识别或编译器不会在partial class设置的断点处中断。

// Autogenerated class by xsd.exe

public partial class Class1
{
    private Class1Brand[] brandField;

    private string Class1guidField;

    .....
}

// Debug Part - probably in a different file
public partial class Class1
{
    public static Validity setValidity(Validity validity)
    {
    // ********* BREAKPOINT IS SET ON THE NEXT LINE ***********
        validity.LastVerified = DateTime.Now;

        //certificates are only updated within 14 days before expiry date
        TimeSpan tsCheck = validity.NotAfter - validity.LastVerified;
        if (tsCheck.Days <= 14)
        {
            DateTime dtNotBefore = validity.NotAfter.AddDays(conf.validityPeriod());
            if (validity.NotAfter > DateTime.Now)
            {
                dtNotBefore = validity.NotAfter;
            }
            else
            {
                dtNotBefore = DateTime.Now;
            }
            validity.NotBefore = dtNotBefore;
            validity.NotAfter = dtNotBefore.AddDays(conf.validityPeriod());
        }
        return validity;
    }

}

1个回答

32

XSD会使用DebuggerStepThroughAttribute修饰所有生成的类,该属性会防止调试器在一个被标记了该属性的方法/类中停下来。

解决方法:

  • 要么搜索并替换所有DebuggerStepThrough属性的出现。
  • 要么,在Visual Studio中,转到工具 - 选项...,滚动到调试/常规并取消选中启用仅调试我的代码旁边的复选框。

+1 我正想回答,但是忘记了属性名称,哈哈。 - Adam Houldsworth
1
请注意,如果您对代码生成的文件进行任何更改,则如果该文件被重新生成,这些更改将会丢失。 - Adam Houldsworth
1
谢谢。在过去的8小时2分钟里,我一直为此事烦恼得不行。顺便说一下:取消选中“启用仅限我的代码”并不能解决这个问题。 - Brad_Z
@Brad_Z 对我来说是的 :) - Jepzen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接