मेरे पास एक विजुअल स्टूडियो पैकेज है जो बाहरी प्रक्रिया शुरू करके अपने कुछ काम करता है (System.Diagnostics.Process
का उपयोग करके) और मानक इनपुट/आउटपुट पर इसके साथ संचार कर रहा है। वर्तमान में, मेरे पास .exe
हार्ड-कोडेड का मार्ग है जो स्पष्ट रूप से एक्सटेंशन को तैनात करने के लिए व्यावहारिक नहीं है। एक्सटेंशन के साथ .exe
को पैकेज और वितरित करने का सही तरीका क्या है? (और, संबंधित, एक बार ऐसा करने के बाद, मैं प्रोग्राम्सैटिक रूप से स्थापित .exe
फ़ाइल के पथ को कैसे खोजूं।) अधिमानतः मैं इसे .vsix
फ़ाइल में रखना चाहता हूं ताकि इंस्टॉलेशन आसान हो।पैकेज .exe में .vsix और विजुअल स्टूडियो एक्सटेंशन से कॉल करें
संपादित करें: मैं रखा है BitBucket पर अपने कोड के प्रासंगिक भाग (यह किसी और रोसलिन उपयोग करने के लिए उपयोगी हो सकता है): आदेश मुझे क्या करना है कोशिश कर रहा हूँ का एक बेहतर विचार देने के लिए roslyn_process। यह कोड AbstractProcessHandler
के कार्यान्वयन का उपयोग करके विजुअल स्टूडियो एक्सटेंशन के बीच संचार स्थापित करता है और RoslynProcess
का उपयोग करके एक अलग प्रक्रिया है। उत्तरार्द्ध को विजुअल स्टूडियो में कोड फ़ाइलों में संशोधनों के बारे में सूचित किया जाता है और कौन सी कोड फ़ाइल देखी जा रही है, इसलिए यह विजुअल स्टूडियो एक्सटेंशन के रूप में नहीं चलने के बावजूद अद्यतित जानकारी के साथ विश्लेषण करने में सक्षम है जो सीमाओं को लागू करेगा सभी कोड पर Roslyn संपादित किया जा रहा है।
संपादित करें 2:this answer का उपयोग करना, मैं विस्तार की सूची प्राप्त कर सकते हैं। मैं सामग्री सूची में इसे "कस्टम एक्सटेंशन प्रकार" के रूप में जोड़कर source.extension.vsixmanifest
में एक और पैकेज शामिल कर सकता हूं। फिर .exe
एक्सटेंशन की निर्देशिका में दिखाई देता है। ऐसा लगता है कि यह संभवतः सही समाधान है हालांकि निर्देशिका प्राप्त करने का तरीका एमएसडीएन में लेबल किया गया है जैसा कि मुझे उपयोग नहीं करना चाहिए।
ऐसा लगता है कि यह ऐसा करने का सबसे अच्छा तरीका हो सकता है, भले ही यह हैकिश लगता है, इस मामले में मैं सब कुछ काम करने के बाद इसे एक उत्तर के रूप में पोस्ट करूंगा।
@Kiquenet: क्षमा करें, मेरे पास एक अच्छी तरह से पैक किया गया न्यूनतम समाधान नहीं है ... लेकिन स्वीकृत उत्तर एक लाइनर है। – perelman