2013-10-03 60 views
5

İki bileşenli bir projem var - bir MEF bileşeni ve bir VSPackage. Ancak, VSPackage'ı VSIX'imden yüklemek için Visual Studio'yu ikna etmemde çok şansım olmadı.MEF bileşenini ve VS paketini aynı projeye yerleştirme

<?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> 

Ben sihirbaz tarafından oluşturulan VSPackage projesinden çoğunlukla aldı .pkgdef: İşte kullanıyorum .vsixmanifest bu.

[$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" 

CodeBase öğesinin, projemin oluşturduğu DLL'ye başvurmak için değiştirdim.

/Log anahtarını kullandım ve ActivityLog'u inceledim ve pkgdef'm gerçekten bulundu ve yüklendi. Ancak, VSPackage'ın çalıştığını gösteren bir kanıt yok. Öğreticiden varsayılan VSPackage, hata ayıklama çıktısına gitmesi gereken yapıcı ve başlatıcıda bir günlük komutuna sahiptir, ancak günlük iletisi görünmez. Sayfa hakkında Visual Studio bunu listelemez. Oluşturucuya kesme noktaları yerleştirdim ve başlatıyorum() ve vurulmuyorlar.

VSPackage'ımı MEF bileşenimle yüklenecek şekilde nasıl paketleyebilirim?

+1

Yanıt burada yeterli değil mi? http://social.msdn.microsoft.com/Forums/en-US/499368ea-8d5f-4efe-85a6-3e66a9a84e30/how-can-i-deploy-a-mef-component-and-a-vs-package- in-the-same-vsix? forumu = VSX –

cevap

3

Eğer paket, Visual Studio başlangıcında yük ana Paket sınıfına UICONTEXT_NoSolution öznitelik eklemek isterseniz: onun komutlar veya hizmetlerin bir kullanıcı tarafından çağrıldığında Aksi paket yalnızca yüklenir

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

veya diğer modüller.