2013-10-03 14 views
5

Mam jeden projekt, który musi składać się z dwóch komponentów - komponentu MEF i VSPackage. Jednak nie miałem szczęścia przekonać Visual Studio do załadowania VSPackage z mojego VSIX. Oto .vsixmanifest że używam:Wdrażanie komponentu MEF i pakietu VS w tym samym projekcie

<?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 wziąłem głównie z projektu VSPackage kreatora generowane.

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

Zmieniłem element CodeBase, aby odnieść się do biblioteki DLL wygenerowanej przez mój projekt.

Użyłem przełącznika/log i sprawdziłem ActivityLog, a mój pkgdef rzeczywiście został znaleziony i załadowany.

Jednak nie ma dowodów na to, że mój VSPackage działa. Domyślne VSPackage z samouczka ma polecenie dziennika w konstruktorze i inicjatorze, które powinno przejść do wyjścia debugowania, ale komunikat dziennika nie pojawia się. Strona Visual Studio o stronie nie wyświetla jej. Umieściłem punkty przerwania w konstruktorze i zainicjowałem(), a one nie są trafione.

Jak mogę spakować VSPackage tak, aby był załadowany moim komponentem MEF?

+1

Czy odpowiedź tutaj jest niewystarczająca? http://social.msdn.microsoft.com/Forums/en-US/499368ea-8d5f-4efe-85a6-3e66a9a84e30/how-can-i-deploy-a-mef-component-and-a-ss-package- in-the-same-vsix? forum = vsx –

Odpowiedz

3

Jeśli chcesz, aby Twój pakiet załadować przy starcie programu Visual Studio, dodać atrybut UICONTEXT_NoSolution do głównej klasy pakiet:

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

przeciwnym razie pakiet jest ładowany tylko wtedy, gdy jego polecenia lub usługi są wywoływane przez użytkownika lub inne moduły.

Powiązane problemy