No se pueden depurar vistas de EmbeddedResource cargadas a través de VirtualPathProvider personalizado

He escrito un VirtualPathProvider personalizado (fuenteaquí) que devolverá el contenido de EmbeddedResources, o del archivo original si se le ha dicho dónde encontrarlo (esto le permite editar y actualizar los archivos sin tener que reconstruirlos). Esto está funcionando bien, hasta ahora.

Lo que no funciona es la depuración. Si agrego un punto de interrupción a la vista, no carga los símbolos. Puedo ver por qué esto es difícil (¿cómo puede el compilador ASP saber dónde está el archivo de origen para detectar los puntos de interrupción?), Pero estoy buscando una forma de sugerir al compilador dónde se puede encontrar el archivo de origen.

Ejemplo de proyecto aquí:http://dl.dropbox.com/u/2808109/VppDebugTest.zip

editar:

He estado experimentando con una página ASPX cargada a través del VPP, y al ver la fuente compilada (usandoLa técnica de David Ebbo.), y los pragmas de línea se generan así:

Line 275:              #line 1 "http://server/EmbeddedPage.aspx"
Line 276:              this.InitializeCulture();

Normalmente, estos se generan a lo largo de las líneas de

Line 275:              #line 1 "d:/somesln/someproj/EmbeddedPage.aspx"

No sé si eso ayuda a alguien, o no ...

edición 2:

Después de que David me envió su código, he investigado un poco más y las siguientes cosas parecen ser ciertas:

no puede establecer un punto de interrupción en un .aspx a menos que se haga referencia a system.web (en VS 2010)

Si creas una página .aspx mínima con las directivas<%@ Page Language="C#" %> y establecer un punto de interrupción, VS se detendrá en el punto de interrupción en el archivo fuente

Si creas un .aspx no mínimo con directivas<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="VppDebugTest.WebForm1" %> y establecer un punto de interrupción, cuando se vea, VS lo llevará a la vista de depuración de desensamblaje

--- 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]

¡Todavía no se detendrá en ningún punto de interrupción en las vistas de Razor, que desafortunadamente es lo que realmente necesito poder hacer! Estas cosas .aspx pueden ser una pista falsa.

editar:

5: Si hago una llamada a Debugger.Break () en mi Index.cshtml, el depurador se detiene en la vista de desmontaje y no hay pragmas en absoluto, incorrectos o no.

Si escribo manualmente@{ #line 1 "C:\Users\Harry\Desktop\VppDebugTest\VppDebugTest.Views\Views\Home\Index.cshtml" } en mi opinión, la depuración se detendrá en el archivo. ¿Entonces tal vez la solución es que mi VPP inserte los pragmas #line en los archivos cshtml?

Respuestas a la pregunta(2)

Su respuesta a la pregunta