5

का उपयोग किया जा रहा है मेरे पास मेरे विजुअल स्टूडियो एक्सटेंशन का समाधान है। VS2010 के बाद से यह एक्सटेंशन किसी भी वीएस संस्करण में काम करना चाहिए। ऐसा इसलिए है क्योंकि मैं वीएस 2010 एसडीके का उपयोग करता हूं। मैंने अपनी परियोजनाओं को वीएस -2010 एसडीके असेंबली और एसडीके के बिना काम करने के लिए लक्षित करने के लिए हैक स्थापित किया - this detailed guide by Aaron Marten के लिए धन्यवाद। मैं सफलतापूर्वक अपने एक्सटेंशन के बनाम बना सकता हूं और इसे किसी भी वीएस में स्थापित कर सकता हूं। अच्छा लगा।वीएस में वीएसआईएक्स एक्सटेंशन को डीबग कैसे करें, जो कि अन्य संस्करणों का है, वीएस एसडीके का संस्करण

लेकिन मैं भी अपने एक्सटेंशन को F5 के साथ डीबग करना चाहता हूं। मैं इसे वीएस -2010 में नहीं करना चाहता लेकिन कुछ अन्य वीएस - वीएस 2015 में अपने मामले में करना चाहता हूं। मेरे पास वीएस 2015 एसडीके भी स्थापित है। लेकिन यह स्पष्ट रूप से काम नहीं करता है। वीएस -2010 एसडीके के लक्ष्यों को वीएस -2010 प्रयोगात्मक उदाहरण में बनाया गया विस्तार तैनात करना था।

तो सवाल यह है:
कैसे सेटअप यदि एक्सटेंशन ने स्वयं को VS2010 एसडीके का उपयोग करता F5 के साथ VS2015 में एक vsix विस्तार डिबग करने के लिए परियोजना के लिए?

शायद मुझे वीएस2015 एसडीके से कुछ लक्ष्यों/कार्यों का उपयोग करने की आवश्यकता है, लेकिन कौन से और कैसे?

उत्तर

3

चरण यह कैसे प्राप्त करने के लिए कदम विवरण द्वारा इतिहास यहाँ कमिट में उपलब्ध है: https://github.com/jaredpar/RoundTripVSIX/commits/master (मैं इसे सफलतापूर्वक इस्तेमाल किया मेरी वी.एस. एक्सटेंशन "एसक्यूएल सर्वर कॉम्पैक्ट उपकरण बॉक्स" में)

+0

धन्यवाद एक बहुत है, यह वास्तव में मैं क्या जरूरत है! – Shrike

+0

ऐसा लगता है कि यह अब और काम नहीं कर रहा है - वीएस 2017 और उसके बाद के लिए – Shrike

3

मैं सादगी के लिए यहाँ समाधान कर दिया । इसे https://github.com/jaredpar/RoundTripVSIX/commits/master से लिया गया है - एक छोटे से जोड़े के साथ @ErikEj का जवाब देखें।

आमतौर पर हम अपने वीएस पैकेज प्रोजेक्ट के csproj में Microsoft.VsSDK.targets फ़ाइल आयात कर रहे हैं। अपनी परियोजनाओं वी.एस. SDKs विश्व स्तर पर स्थापित मैं VS2010 एसडीके के साथ एक स्थानीय फ़ोल्डर से आयात कर रहा हूँ पर निर्भर नहीं करता है:

<Import Project="..\..\SDK\v10.0\MSBuild\VSSDK\Microsoft.VsSDK.targets" /> 

चाल है यह आयात गतिशील बनाने के लिए:

  • जब हम कर रहे हैं वीएस में वर्तमान वीएस संस्करण
  • के वीएसएसडीके लक्ष्यों का आयात करना चाहिए जब हम प्रोजेक्ट का निर्माण कर रहे हों तो न्यूनतम समर्थित वीएस संस्करण (पहले की तरह) के VSSDK लक्ष्यों को आयात करना चाहिए।

इस अतिरिक्त चर के माध्यम से हासिल की है ("VsSdkTargets" - नाम किसी भी हो सकता है):

<Import Condition="Exists($(VsSdkTargets))" Project="$(VsSdkTargets)" /> 

और यहाँ VsSdkTargets की परिभाषा (आयात करने से पहले होना चाहिए) है:

<PropertyGroup> 
    <VsSdkTargets Condition=" '$(VisualStudioVersion)' == '' or '$(BuildingInsideVisualStudio)' != 'false' ">..\..\SDK\v10.0\MSBuild\VSSDK\Microsoft.VsSDK.targets</VsSdkTargets> 
    <VsSdkTargets Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\VSSDK\Microsoft.VsSDK.targets</VsSdkTargets> 

</PropertyGroup> 

यह वैरिएबल VisualStudioVersion की उपलब्धता पर हमारे आयात गतिशील आधार बनाता है जो केवल वीएस और BuildingInsideVisualStudio के अंदर उपलब्ध है। वीएस के अंदर निर्माण करते समय BuildingInsideVisualStudiotrue होगा।

आप तो संस्करणों वी.एस. अलग में समाधान को खोलने के लिए हम डिबगिंग के लिए MinimumVisualStudioVersion चर

<PropertyGroup> 
    <!-- This is added to prevent forced migrations in Visual Studio 2012 and newer --> 
    <MinimumVisualStudioVersion Condition="'$(VisualStudioVersion)' != ''">$(VisualStudioVersion)</MinimumVisualStudioVersion> 
</PropertyGroup> 

के अनुकूलन जोड़ने के लिए भी जरूरत है सभी समर्थित संस्करणों में सरल तरीके (F5) में शुरू करने के लिए की जरूरत है विजुअल स्टूडियो के और स्वतंत्र रूप से इस परियोजना के लिए उपयोगकर्ता सेटिंग्स से, आपको पहले PropertyGroup में निम्नलिखित निर्देशों संलग्न करना होगा:

<PropertyGroup> 
    ... 
    <StartAction>Program</StartAction> 
    <StartProgram>$(DevEnvDir)\devenv.exe</StartProgram> 
    <StartArguments>/rootsuffix Exp</StartArguments> 
</PropertyGroup> 
संबंधित मुद्दे