मैं एक कस्टम VirtualPathProvider लिखा है (स्रोत here) जो सामग्री वापस आ जाएगी EmbeddedResources से, या मूल फ़ाइल से अगर यह जहां यह लगता है (इस प्रकार आप को संपादित करने और अद्यतन करने की अनुमति देता बताया जा चुका है डिबग नहीं कर सकते बिना पुनर्निर्माण के फाइलें)। यह अभी तक ठीक काम कर रहा है।EmbeddedResource विचारों कस्टम के माध्यम से भरी हुई VirtualPathProvider
काम नहीं कर रहा है डीबगिंग है। यदि मैं दृश्य में ब्रेकपॉइंट जोड़ता हूं, तो यह प्रतीकों को लोड नहीं करता है। मैं देख सकता हूं कि यह क्यों मुश्किल है (एएसपी कंपाइलर कैसे पता लगा सकता है कि ब्रेकपॉइंट्स को स्पॉट करने के लिए स्रोत फ़ाइल कहां है?), लेकिन मैं संकलक को संकेत देने का एक तरीका ढूंढ रहा हूं जहां स्रोत फ़ाइल मिल सकती है।
उदाहरण यहाँ परियोजना: http://dl.dropbox.com/u/2808109/VppDebugTest.zip
संपादित करें:
मैं वीपीपी के माध्यम से भरी हुई एक ASPX पेज के साथ प्रयोग किया गया है, और देखने के संकलित स्रोत (David Ebbo's technique का प्रयोग करके) द्वारा, और रेखा pragmas उत्पन्न कर रहे हैं इसलिए जैसे:
Line 275: #line 1 "http://server/EmbeddedPage.aspx"
Line 276: this.InitializeCulture();
आम तौर पर, इन
Line 275: #line 1 "d:/somesln/someproj/EmbeddedPage.aspx"
की तर्ज पर उत्पन्न कर रहे हैं
जानते हैं न कि अगर किसी को भी मदद करता है, या नहीं ...
संपादित 2:
के बाद दाऊद ने मुझे अपने कोड भेजा, मैं कुछ आगे की जांच पड़ताल किया है और निम्नलिखित बातें सच होने लगते हैं:
- आप एक .aspx में एक ब्रेकपाइंट सेट नहीं कर सकता जब तक कि system.web (वी.एस. 2010 में)
आप एक ब्रेकपाइंट निर्देशों
<%@ Page Language="C#" %>
साथ एक न्यूनतम .aspx पेज बना सकते हैं और निर्धारित करते हैं, वी.एस. संदर्भित है ब्रेकपोई पर रुक जाएगा स्रोत फ़ाइल में NTअगर आप निर्देशों
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="VppDebugTest.WebForm1" %>
के साथ एक गैर न्यूनतम .aspx एक ब्रेकपाइंट बना सकते हैं और निर्धारित करते हैं, जब देखी वी.एस. आप 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: अगर मैं Debugger.Break() मेरी Index.cshtml में करने के लिए एक फोन कर दिया, डिबगर disassembly के दृश्य पर बंद हो जाता है, और वहाँ सभी में कोई pragmas कर रहे हैं, गलत या अन्यथा
- यदि मैं अपने दृश्य में मैन्युअल रूप से
@{ #line 1 "C:\Users\Harry\Desktop\VppDebugTest\VppDebugTest.Views\Views\Home\Index.cshtml" }
लिखता हूं, तो डीबग फ़ाइल में रुक जाएगा। तो हो सकता है कि समाधान मेरे वीपीपी के लिए cshtml फाइलों में #line pragmas डालने के लिए है ??
आपके संलग्न प्रोजेक्ट में, रेपो को देखने के लिए कौन से सटीक कदम हैं? जैसे मैं किस पर नेविगेट करता हूं, मैं कब संलग्न करता हूं, मैं बीपी कहां सेट कर सकता हूं, आदि ... –
index.cshtml के अंदर ब्रेकपॉइंट सेट करें (उदाहरण के लिए @ व्यूबैग.मेसेज लाइन पर) और यदि आप चलाते हैं तो डीबगर वहां नहीं रुक जाएगा परियोजना। डीबगर। ब्रेक() में एक कॉल जोड़ें और आपको स्रोत कोड नहीं, डिस्सेप्लर प्राप्त करें। – mcintyre321
हम्म, यह अजीब है। इस मामले में जेनरेट की गई फाइल में कोई भी प्रागमास नहीं है! ध्यान दें कि एएसपीएक्स और सीएसटीएमएल (उर्फ रेजर) पृष्ठों के लिए कोड जनरेटर पूरी तरह से अलग हैं, इसलिए यह रेजर के लिए विशिष्ट समस्या हो सकती है। –