EmbeddedResourcesのコンテンツを返すカスタムVirtualPathProvider(ソースhere)を作成しました。見つかった場合は、オリジナルのファイルから編集して更新できますファイルを再構築する必要はありません)。今のところこれはうまくいきます。カスタムVirtualPathProvider経由で読み込まれたEmbeddedResourceビューをデバッグできません
デバッグは機能しません。ビューにブレークポイントを追加すると、シンボルがロードされません。私はこれがなぜ難しいのか分かります(ASPコンパイラはブレークポイントを見つけるためにソースファイルがどこにあるかを知ることができますか?)。しかし、ソースファイルがどこにあるのかコンパイラをヒントする方法を探しています。ここ
例プロジェクト:http://dl.dropbox.com/u/2808109/VppDebugTest.zip
編集:私はVPPを経由してロードされたASPXページを試してきました
、および(David Ebbo's techniqueを使用して)コンパイルされたソースを見ることで、ラインプラグマが生成され、そのよう:
Line 275: #line 1 "http://server/EmbeddedPage.aspx"
Line 276: this.InitializeCulture();
通常、これらは
Line 275: #line 1 "d:/somesln/someproj/EmbeddedPage.aspx"
のラインに沿って生成され、ダビデは私に彼のコードを送信した後
、私はいくつかのさらなる調査を行っていると、以下の事柄が真実であるように見える:それは誰も助け、かどう
は2
編集...知ってはいけません。 system.webが参照されていない限り、あなたはディレクティブ<%@ Page Language="C#" %>
で最小限の.aspxページを作成して、ブレークポイントを設定する場合は、(VS 2010で).aspxの中にVSを
をブレークポイントを設定することはできません
- ブレポイで止まるあなたはブレークポイントをディレクティブ
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="VppDebugTest.WebForm1" %>
と非最小限の.aspxを作成し、設定している場合、NTソースファイル内の 、見たときVSはdissasemblyデバッグビューに入ります
--- http://server/WebForm1.aspx ------------------------------------------------ 0000003a mov ecx,dword ptr [ebp-3Ch] 0000003d call 63EC54F0 00000042 mov dword ptr [ebp-44h],eax 00000045 mov edx,dword ptr ds:[03E62200h] 0000004b mov ecx,dword ptr [ebp-44h]
それをレイザービューのブレークポイントで停止することはまだありません。これは残念ながら私が本当にできることです。この.aspxのものは、赤いニシンかもしれません。
編集:
5:私は私のIndex.cshtmlにDebugger.Break()の呼び出しを入れた場合、デバッガは解体ビューで中止され、プラグマが全く存在しない、正しくないか、そうでなければ
- 私が手動で
@{ #line 1 "C:\Users\Harry\Desktop\VppDebugTest\VppDebugTest.Views\Views\Home\Index.cshtml" }
を書き込むと、デバッグはファイル内で停止します。ですから、私のVPPが#lineプラグマをcshtmlファイル自体に挿入するのが解決策ですか?
添付のプロジェクトでは、再現を確認するための正確な手順は何ですか?例えば何をナビゲートすればいいですか、いつどこでBPなどを設定しますか? –
index.cshtml内にブレークポイントを設定します(たとえば、@ ViewBag.Message行で)、実行するとデバッガはそこで停止しませんプロジェクト。 Debugger.Break()への呼び出しを追加すると、ソースコードではなく、逆アセンブリが発生します。 – mcintyre321
うーん、これは変です。この場合、生成されたファイルにはプラグマがまったく含まれていません。 aspxとcshtml(別名Razor)ページのコードジェネレータはまったく異なるので、Razor固有の問題である可能性があります。 –