2013-10-03 27 views
5

我有一個項目,需要兩個組件 - 一個MEF組件和一個VSPackage。不過,我沒有太多的運氣說服Visual Studio從我的VSIX加載VSPackage。下面是我使用的.vsixmanifest:在同一個項目中部署MEF組件和VS包

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

我把大部分來自嚮導生成的VSPackage的項目的.pkgdef。

[$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元素來引用我的項目生成的DLL。

我使用了/ log開關,並檢查了ActivityLog,並且發現並加載了我的pkgdef。

但是,沒有證據表明我的VSPackage正在運行。本教程中的默認VSPackage在構造函數和初始化程序中有一個log命令,它應該轉到調試輸出,但不會出現日誌消息。 Visual Studio關於頁面沒有列出它。我在構造函數和initialize()中放置了斷點,並且它們沒有被擊中。

如何打包我的VSPackage以使其加載我的MEF組件?

+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

如果你希望你的包上的Visual Studio啓動時加載的UICONTEXT_NoSolution屬性添加到您的主包裝類:

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

否則包只加載時的命令或服務由用戶調用或其他模塊。

相關問題