2013-10-03 5 views
5

मेरे पास एक प्रोजेक्ट है, जिसे दो घटक होने चाहिए - एक एमईएफ घटक और एक वीएसपीकेज। हालांकि, मेरे विजुअल स्टूडियो को मेरे वीएसआईएक्स से वीएसपीएकेज लोड करने के लिए मुझे बहुत भाग्य नहीं मिला है।एक ही प्रोजेक्ट में MEF घटक और वीएस पैकेज को तैनात करना

<?xml version="1.0" encoding="utf-8"?> 
<Vsix Version="1.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2010"> 
    <Identifier Id="VisualWide.Microsoft.03ab796d-a0e5-440d-87f9-9461dec10f23"> 
     <Name>Visual Wide</Name> 
     <Author>Fuckin' Magnets</Author> 
     <Version>1.0</Version> 
     <Description>Provides Wide support for Visual Studio</Description> 
     <Locale>1033</Locale> 
     <SupportedProducts> 
      <VisualStudio Version="11.0"> 
       <Edition>VST_All</Edition> 
       <Edition>Pro</Edition> 
      </VisualStudio> 
     </SupportedProducts> 
     <SupportedFrameworkRuntimeEdition MinVersion="4.5" MaxVersion="4.5" /> 
    </Identifier> 
    <Content> 
     <MefComponent>|VisualWide|</MefComponent> 
     <VsPackage>VSPackage/VSPackage1.pkgdef</VsPackage> 
    </Content> 
</Vsix> 

.pkgdef मैं ज्यादातर जादूगर-उत्पन्न VSPackage परियोजना से ले लिया: यहाँ .vsixmanifest है कि मैं का उपयोग कर रहा है।

[$RootKey$\InstalledProducts\VSPackage1Package] 
@="#110" 
"Package"="{27d97bf0-ec8c-466d-b1a0-df926943c05e}" 
"PID"="1.0" 
"ProductDetails"="#112" 
"LogoID"="#400" 
[$RootKey$\Packages\{27d97bf0-ec8c-466d-b1a0-df926943c05e}] 
@="VSPackage1Package" 
"InprocServer32"="$WinDir$\SYSTEM32\MSCOREE.DLL" 
"Class"="Microsoft.VSPackage1.VSPackage1Package" 
"CodeBase"="$PackageFolder$\VisualWide.dll" 

मैंने कोडबेज तत्व को मेरे प्रोजेक्ट जेनरेट करने के लिए डीएलएल को संदर्भित करने के लिए बदल दिया।

मैंने/लॉग स्विच का उपयोग किया, और गतिविधि लॉग का निरीक्षण किया, और मेरा pkgdef वास्तव में पाया और लोड हो रहा है।

हालांकि, मेरे पास कोई सबूत नहीं है कि मेरा VSPackage कार्य कर रहा है। ट्यूटोरियल से डिफ़ॉल्ट VSPackage में कन्स्ट्रक्टर और प्रारंभकर्ता में लॉग कमांड होता है जिसे डीबग आउटपुट पर जाना चाहिए, लेकिन लॉग संदेश प्रकट नहीं होता है। पृष्ठ के बारे में विजुअल स्टूडियो इसे सूचीबद्ध नहीं करता है। मैंने कन्स्ट्रक्टर में ब्रेकपॉइंट्स लगाए और प्रारंभ(), और वे हिट नहीं हुए।

मैं अपने वीएसपीकेज को कैसे पैकेज कर सकता हूं ताकि यह मेरे एमईएफ घटक से भरा हो?

+1

क्या उत्तर यहां पर्याप्त नहीं है? http://social.msdn.microsoft.com/Forums/en-US/499368ea-8d5f-4efe-85a6-3e66a9a84e30/how-can-i-deploy-a-mef-component-and-a-vs-package- इन-द-ही-vsix? मंच = VSX –

उत्तर

3

आप अपने पैकेज, विजुअल स्टूडियो स्टार्टअप पर लोड आपका मुख्य पैकेज वर्ग के लिए UICONTEXT_NoSolution विशेषता जोड़ना चाहते हैं:

[ProvideAutoLoad("ADFC4E64-0397-11D1-9F4E-00A0C911004F")] 

अन्यथा पैकेज केवल लोड किया जाता है जब इसकी आज्ञा या सेवाओं के लिए उपयोगकर्ता द्वारा लाया जाता है या अन्य मॉड्यूल

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