2013-04-19 6 views
5

यदि मैं इस सी # कोड को एक EXE फ़ाइल में संकलित करता हूं और Windows कमांड खोल में चलाता हूं तो यह ठीक चलता है: प्रॉम्प्ट आउटपुट, कुछ उपयोगकर्ता इनपुट के लिए उसी पंक्ति पर प्रतीक्षा करके, उस इनपुट को प्रतिबिंबित करते हुए। PowerShell v3 खोल में चलना यह भी ठीक चलाता है। यदि, हालांकि, मैं PowerShell ISE V3 में एक ही EXE फ़ाइल चलाता हूं, यह कभी भी Write से आउटपुट उत्सर्जित नहीं करता है और यह ReadLine पर लटकता है। (एक अलग रूप में रूप में, यह Write से उत्पादन करता है, तो यह बाद में एक WriteLine द्वारा पीछा किया जाता फेंकना होगा।)PowerShell ISE इस सी # प्रोग्राम पर क्यों लटका है?

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      System.Console.Write("invisible prompt: "); 
      var s = System.Console.ReadLine(); 
      System.Console.WriteLine("echo " + s); 
     } 
    } 
} 

यह एक आईएसई बग है या यह काम करने के लिए समायोजित करने के लिए कुछ संपत्ति है ...?

+0

यह सुनिश्चित नहीं है कि यह प्रासंगिक है लेकिन पावरहेल में इसे कभी-कभी * कीबोर्ड मतदान * कहा जाता है जो कुछ मुद्दों को लागू कर सकता है। तो हो सकता है कि जब 'कंसोल। रीडलाइन()' को पावरहेल के कारण उस मतदान का उपयोग करके बुलाया जाता है तो यह एक संघर्ष हो सकता है। – Greg

उत्तर

4

आईएसई को console कक्षा के लिए कोई समर्थन नहीं है।

  • [कंसोल] वर्ग के लिए कोई समर्थन, कोशिश [सांत्वना] :: पृष्ठभूमि रंग = 'सफेद'।
    • सामान्य तौर पर, स्क्रिप्ट मेजबान एपीआई (लिखने-मेजबान, [कंसोल] वर्ग के बजाय, ताकि वे दोनों में काम कंसोल, आईएसई, दूरस्थ और अन्य गोले का उपयोग करना चाहिए।

संदर्भ: http://blogs.msdn.com/b/powershell/archive/2009/04/17/differences-between-the-ise-and-powershell-console.aspx

+0

एंडी: आपने मुझे एहसास दिलाया है कि मुझे जो सवाल पूछा जाना चाहिए वह जवाब पर निर्भर करता है: यदि कोई कामकाज/सेटिंग/आदि था। तो यह सवाल उतना अच्छा होगा, लेकिन जब आप इंगित करते हैं कि _not_ है तो बेहतर सवाल कुछ ऐसा होना चाहिए था: क्या कंसोल का उपयोग किए बिना आईएसई से सी # में इनपुट पढ़ने का कोई तरीका है? _ लेकिन मुझे नहीं पता था संभवतः। वैसे भी, आपने उत्तर दिया जैसा कि आपने पूछा है ताकि आपको चेकमार्क मिल सके - धन्यवाद! –

+0

यह एक अच्छा सवाल @msorens होगा, आपको यह पूछना चाहिए। –

0

Powershell-पढ़ने के लिए मेजबान कंसोल से पढ़ा जाएगा आप सी # के भीतर से पढ़ने के मेजबान पर अमल कर सकता है निष्पादित पुनश्च आदेशों से सी # पाउ के बारे में वर्गों में MSDN पर प्रलेखित है।। र्शेल होस्टिंग। निम्नलिखित पावरहेल स्क्रिप्ट के साथ विधियों को कॉल करता है - सी # में कनवर्ट करना आसान होना चाहिए। ध्यान दें कि $ होस्ट को सी # प्रोग्राम में पास किया जाना चाहिए।

[powershell]::create().AddScript('param($ho) $ho.ui.readline()').AddArgument($host).Invoke() 
4

के रूप में (EXE एक स्टैंडअलोन कार्यक्रम के रूप में लागू बनाम) [MyClass] :: मुख्य ($ मेजबान): इसलिए आप आईएसई भीतर एक विधानसभा के रूप में सी # प्रोग्राम लोड और मुख्य() की तरह आह्वान करने के लिए होगा .\ConsoleApplication1.exe कॉल start .\ConsoleApplication1.exe पर कॉल करने के बजाय पावरहेल आईएसई में एक वर्कअराउंड, यह एक नए कमांड प्रॉम्प्ट में एप्लिकेशन शुरू करेगा, जो स्टडीन से इनपुट स्वीकार करेगा।

+0

+1 यह एक आसान कामकाज है - इसे सुझाव देने के लिए धन्यवाद! –

संबंधित मुद्दे