2013-10-03 14 views
5

Ho un progetto, che deve essere di due componenti: un componente MEF e un VSPackage. Tuttavia, non ho avuto molta fortuna a convincere Visual Studio a caricare VSPackage dal mio VSIX. Ecco il .vsixmanifest che sto usando:Distribuzione del componente MEF e del pacchetto VS nello stesso progetto

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

Il .pkgdef ho preso in gran parte dal progetto VSPackage generato dalla procedura guidata.

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

Ho modificato l'elemento CodeBase per fare riferimento alla DLL che il mio progetto genera.

Ho utilizzato l'opzione/log e ho controllato il ActivityLog e il mio pkgdef è stato effettivamente trovato e caricato.

Tuttavia, non ci sono prove che il mio VSPackage funzioni. Il VSPackage predefinito dell'esercitazione ha un comando di log nel costruttore e inizializzatore che dovrebbe andare all'output di debug, ma il messaggio di log non appare. Il Visual Studio sulla pagina non lo elenca. Ho posizionato i breakpoint nel costruttore e inizializzato(), e non vengono colpiti.

Come posso impacchettare il mio VSPackage in modo che sia caricato con il mio componente MEF?

+1

La risposta qui non è sufficiente? 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? forum = VSX –

risposta

3

Se volete che il vostro pacchetto per caricare su Visual Studio all'avvio, aggiungere l'attributo UICONTEXT_NoSolution alla principale classe di pacchetto:

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

In caso contrario, il pacchetto viene caricato solo quando i suoi comandi o servizi vengono richiamati da un utente o di altri moduli.

Problemi correlati