Über benutzerdefinierten VirtualPathProvider geladene EmbeddedResource-Ansichten können nicht debuggt werden

Ich habe einen benutzerdefinierten VirtualPathProvider (Quelle) geschriebenHier), der Inhalte von EmbeddedResources oder von der Originaldatei zurückgibt, wenn bekannt ist, wo diese zu finden ist (so können Sie die Dateien bearbeiten und aktualisieren, ohne sie neu erstellen zu müssen). Das funktioniert soweit gut.

Was nicht funktioniert, ist das Debuggen. Wenn ich der Ansicht einen Haltepunkt hinzufüge, werden die Symbole nicht geladen. Ich kann sehen, warum dies schwierig ist (wie kann der ASP-Compiler wissen, wo sich die Quelldatei befindet, um die Haltepunkte zu erkennen?), Suche jedoch nach einer Möglichkeit, dem Compiler einen Hinweis darauf zu geben, wo sich die Quelldatei befindet.

Beispielprojekt hier:http://dl.dropbox.com/u/2808109/VppDebugTest.zip

bearbeiten:

Ich habe mit einer ASPX - Seite experimentiert, die über VPP geladen wurde, und die kompilierte Quelle angezeigt (mitDavid Ebbos Technik) und die Zeilen-Pragmas werden wie folgt generiert:

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

Normalerweise werden diese nach dem Vorbild von erzeugt

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

Weiß nicht, ob das jemandem hilft oder nicht ...

2 bearbeiten:

Nachdem David mir seinen Code geschickt hat, habe ich weitere Nachforschungen angestellt und die folgenden Dinge scheinen zu stimmen:

Sie können in einer ASPX-Datei nur dann einen Haltepunkt festlegen, wenn auf system.web verwiesen wird (in VS 2010).

Wenn Sie eine minimale ASPX-Seite mit den Anweisungen erstellen<%@ Page Language="C#" %> Wenn Sie einen Haltepunkt festlegen, stoppt VS am Haltepunkt in der Quelldatei

Wenn Sie eine nicht minimale ASPX-Datei mit Direktiven erstellen<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="VppDebugTest.WebForm1" %> und legen Sie einen Haltepunkt fest, wenn VS angezeigt wird, gelangen Sie zur Debug-Ansicht für die Zerlegung

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

Es wird immer noch nicht an irgendwelchen Haltepunkten in den Razor-Ansichten anhalten, was ich leider wirklich brauchen muss, um es zu können! Dieses ASPX-Zeug kann ein roter Hering sein.

bearbeiten:

5: Wenn ich Debugger.Break () in meine Datei Index.cshtml aufrufe, stoppt der Debugger in der Disassembly-Ansicht, und es gibt überhaupt keine falschen oder sonstigen Pragmas

Wenn ich manuell schreibe@{ #line 1 "C:\Users\Harry\Desktop\VppDebugTest\VppDebugTest.Views\Views\Home\Index.cshtml" } aus meiner sicht wird das debuggen in der datei aufhören. Vielleicht besteht die Lösung darin, dass mein VPP die # line-Pragmas in die cshtml-Dateien selbst einfügt?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage