Não é possível depurar exibições de EmbeddedResource carregadas via VirtualPathProvider personalizado

Eu escrevi um VirtualPathProvider personalizado (fonteAqui) que retornará o conteúdo de EmbeddedResources ou do arquivo original se tiver sido informado onde encontrá-lo (isso permite editar e atualizar os arquivos sem ter que recriar). Isso está funcionando bem, até agora.

O que não está funcionando é a depuração. Se eu adicionar um ponto de interrupção à exibição, ele não carregará os símbolos. Eu posso ver porque isso é difícil (como pode o compilador ASP saber onde está o arquivo de origem, a fim de identificar os pontos de interrupção?), Mas estou procurando uma maneira de sugerir ao compilador onde o arquivo de origem pode ser encontrado.

Exemplo de projeto aqui:http://dl.dropbox.com/u/2808109/VppDebugTest.zip

editar:

Eu tenho experimentado com uma página ASPX carregada através do VPP, e vendo a Fonte Compilada (usandoTécnica de David Ebbo), e os pragmas de linha são gerados da seguinte forma:

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

Normalmente, estes são gerados ao longo das linhas de

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

Não sei se isso ajuda alguém, ou não ...

edição 2:

Depois que David me enviou seu código, fiz mais algumas investigações e as seguintes coisas parecem ser verdadeiras:

você não pode definir um ponto de interrupção em um .aspx a menos que system.web seja referenciado (no VS 2010)

se você criar uma página .aspx mínima com as diretivas<%@ Page Language="C#" %> e definir um ponto de interrupção, o VS irá parar no ponto de interrupção no arquivo de origem

se você criar um .aspx não mínimo com diretivas<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="VppDebugTest.WebForm1" %> e definir um ponto de interrupção, quando visto VS irá levá-lo para a visão de depuração 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]

Ele ainda não vai parar em nenhum ponto de interrupção nas visualizações do Razor, o que infelizmente é o que eu realmente preciso ser capaz de fazer! Este material .aspx pode ser um arenque vermelho.

editar:

5: Se eu fizer uma chamada para Debugger.Break () em meu Index.cshtml, o depurador pára na exibição de desmontagem e não há nenhum pragma, incorreto ou não.

Se eu escrever manualmente@{ #line 1 "C:\Users\Harry\Desktop\VppDebugTest\VppDebugTest.Views\Views\Home\Index.cshtml" } na minha opinião, a depuração irá parar no arquivo. Então, talvez a solução seja para o meu VPP inserir os pragmas #line nos próprios arquivos cshtml?

questionAnswers(2)

yourAnswerToTheQuestion