MyPage.aspx と MyPage.aspx.cs と MyPage.aspx.designer.cs に加えて、3 番目の部分ファイルを作成して、非運用テスト コードを追加しようとしていました。3 番目のファイルを 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 部分ファイルに移動すると、イベントが登録されて実行されます。見知らぬ人、アセンブリを逆コンパイルして diff を実行すると、クラスが同じコードに逆コンパイルされているように見えます。
関係のない可能性のある手がかり:
- ページは autoeventwireup="true" を使用します (イベントを Page_LoadComplete に登録しようとすると、同じ動作が得られます)
- アプリケーションは Web アプリケーションです (つまり、proj ファイルを使用します)。
- 部分ファイルはコンパイルされます (また、部分ファイルにエラーを導入すると、コンパイルが妨げられるため、部分ファイルがコンパイルされることは確実です)。
- 異なるイベント (PreRender など) を使用しても同じ結果が得られます