除了 MyPage.aspx 和 MyPage.aspx.cs 和 MyPage.aspx.designer.cs 之外,我还试图通过创建第三部分文件来添加一些非生产测试代码。我将第三个文件称为 MyPage.aspx.TEST.cs
在部分文件 MyPage.aspx.TEST.cs 中,我写了以下内容:
protected override void OnInit(EventArgs e)
{
Page.LoadComplete += RunTest;
base.OnInit(e);
}
//Assert.
public void RunTest(object sender, EventArgs e)
{
//Clever assertions
}
代码编译,然后我反编译代码,就在那里,我可以看到 OnInit 覆盖和 RunTest 方法。
但是当我执行页面时,事件没有注册,也没有运行,也不能设置断点。
我将该代码从 MyPage.aspx.TEST.cs 部分类移到 MyPage.aspx.cs 部分文件中,事件注册并执行。陌生人,当我反编译程序集并进行比较时,该类似乎反编译为相同的代码。
可能无关的线索:
- 该页面使用 autoeventwireup="true"(如果我尝试将我的事件注册到我的 Page_LoadComplete,我仍然会得到相同的行为)
- 该应用程序是一个 Web 应用程序(即使用 proj 文件)
- 部分文件确实编译(如果我在部分文件中引入错误,它将阻止编译,所以我确定部分文件确实被编译)
- 我使用不同的事件(PreRender 等)得到相同的结果