2015-04-10 4 views
8

के बाहर टाइपस्क्रिप्ट प्रकार फ़ाइलों को डीबग करना ISP.NET 5 में टाइपस्क्रिप्ट फ़ाइलों को कैसे डिबग करना चाहिए? निम्न चित्र के रूप में समाधान लेआउट मान लीजिए। नोटिस .ts स्क्रिप्ट wwwroot फ़ोल्डर के बाहर हैं और संकलित .js फ़ाइल ग्रंट कार्य के माध्यम से वहां जा रही है। कार्य भी .map फ़ाइल बनाता है जो मूल .ts फ़ाइलों का संदर्भ देता है।wwwroot

नोट हालांकि यह संदर्भ wwwroot (../Scripts/app.ts) के बाहर जाता है। यह स्पष्ट रूप से एक ब्राउज़र में काम नहीं करता है।

कोई विचार?

enter image description here

+1

तुम क्यों wwwroot में अपने .ts नकल नहीं है? –

+1

वीएस डुप्लिकेट पहचानकर्ताओं के बारे में शिकायत करेगा क्योंकि समान कक्षाओं को 2 स्थानों में परिभाषित किया जाएगा। – Mikeon

+2

मुझे यह भी नहीं लगता कि wwwroot में अनावश्यक फाइलें डालने का तरीका है जिस तरह से हमें काम करना चाहिए। – Mikeon

उत्तर

2

मैं अपने नियंत्रकों, जहां appEnvironment एक IApplicationEnvironment है में से एक अपने नियंत्रक में इंजेक्शन के लिए निम्न कार्रवाई कहा:

#if DEBUG 

[ExcludeFromCodeCoverage] 
[Route("Scripts/{*pathInfo}", Order = 500)] 
public IActionResult TestTypescript(string pathInfo, System.Threading.CancellationToken cancellationToken) 
{ 
    var path = appEnvironment.ApplicationBasePath + "/Scripts/" + pathInfo; 
    if (System.IO.File.Exists(path) && pathInfo.EndsWith(".ts")) 
    { 
     return File(path, "application/javascript"); 
    } 
    else 
    { 
     return HttpNotFound(); 
    } 
} 

#endif 

सुविधाजनक, नई वेब सर्वर ../ को निकाल देते हैं (मैं सुरक्षा उद्देश्यों के लिए मान रहा हूं), इसलिए आपको रूट में होने के बारे में चिंता करने की भी आवश्यकता नहीं है। (ध्यान दें कि आपके पास काम करने के लिए इन पथों के लिए नियंत्रक पर [RoutePrefix] विशेषता नहीं है।)

+1

लगभग काम करता है। प्रतिस्थापित करना था: var path = System.IO.Directory।GetCurrentDirectory() + "/ स्क्रिप्ट /" + pathInfo; के साथ: var path = appEnvironment.AplicationBasePath + "/ स्क्रिप्ट /" + pathInfo; और एक कन्स्ट्रक्टर जोड़ें: IAplicationEnvironment appEnvironment; \t \t सार्वजनिक HomeController (IApplicationEnvironment appEnvironment) \t \t { \t \t \t this.appEnvironment = appEnvironment; \t \t} – Mikeon

+0

यह करने का एक बेहतर तरीका है; मैं जवाब अपडेट करूंगा! –

0

मैं विजुअल स्टूडियो 2015 आरसी का उपयोग कर रहा हूं और wwwroot फ़ोल्डर के बाहर स्क्रिप्ट के लिए डिबगिंग डिफ़ॉल्ट रूप से काम करता हूं यदि मैं इंटरनेट एक्सप्लोरर सेट करता हूं दृश्य स्टूडियो में डीबग ब्राउज़र के रूप में।

यह आपको दृश्य स्टूडियो आईडीई में सीधे ब्रेकपॉइंट्स रखने का मौका भी देता है।

1

मैं एक ही समस्या में ठोकर खाई है। अभी, विजुअल स्टूडियो 2015 अपडेट 1, के साथ और मैं निम्नलिखित सामग्री के साथ परियोजना जड़ में tsconfig.json रखकर इस समस्या को दूर करने के लिए प्रबंधित (ध्यान दें बहिष्कृत करें):

{ 
    "compilerOptions": { 
    "module": "amd", 
    "noImplicitAny": false, 
    "sourceMap": false, 
    "target": "es5" 
    }, 
    "exclude": [ 
    "wwwroot", 
    "bower_components", 
    "node_modules" 
    ] 
} 
इस के साथ

, आप कर सकते हैं wwwroot और VS में * .ts फ़ाइलों की प्रतिलिपि बनाने के लिए आपका कार्य धावक डुप्लिकेट के बारे में शिकायत नहीं करेगा। वास्तव में, यह खंड को बाहर करने के पथों के नीचे सभी फ़ाइलों को पूरी तरह से अनदेखा कर देगा।

12

मैं अभी भी सटीक दृश्य स्टूडियो में एक ही समस्या है 2015 अपडेट 1. मैं Startup.cs में निम्न कोड स्निपेट का उपयोग करके इसे हल:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationEnvironment appEnv) 
{ 
    app.UseStaticFiles(); 
    if (env.IsDevelopment()) 
    { 
     app.UseFileServer(new FileServerOptions() 
     { 
      FileProvider = new PhysicalFileProvider(System.IO.Path.Combine(appEnv.ApplicationBasePath, "App")), 
      RequestPath = new PathString("/App"), 
     }); 
    } 
} 

मेरे सभी टाइपप्रति-फ़ाइलें /अनुप्रयोग तहत कर रहे हैं

+0

मुझे यह जवाब ASP.NET कोर एमवीसी विकास के तहत सबसे साफ समाधान मिलता है और यह आवश्यक दिशानिर्देशों का पालन करता है। –

+1

यह एएसपी.Net कोर 1.0 के रिलीज के बाद अब संकलित नहीं होगा, मैंने नीचे इस उत्कृष्ट विचार के लिए एक अद्यतन कोड पोस्ट किया है: http://stackoverflow.com/a/40328737/1671558 –

2

एक अच्छा स्टेफ के जवाब के लिए ASP.Net कोर रिलीज के साथ एक अद्यतन (जो अब संकलन नहीं होगा):

public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
{ 
    if (env.IsDevelopment()) 
    { 
     app.UseFileServer(new FileServerOptions() 
     { 
      FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "Scripts")), 
      RequestPath = new PathString("/app"), 
     }); 
    } 
} 
संबंधित मुद्दे