visual-studio-2012 - 在同一个项目中部署MEF组件和VS包

标签 visual-studio-2012 visual-studio-extensions

我有一个项目,它需要由两个组件组成 - 一个 MEF 组件和一个 VSPackage。但是,我没能成功说服 Visual Studio 从我的 VSIX 加载 VSPackage。这是我正在使用的 .vsixmanifest:

<?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 在构造函数和初始化程序中有一个日志命令,该命令应转到调试输出,但日志消息不会出现。 Visual Studio 关于页面未列出它。我在构造函数和initialize()中放置了断点,但它们没有被命中。

如何打包我的 VSPackage,以便它与我的 MEF 组件一起加载?

最佳答案

如果您希望在 Visual Studio 启动时加载包,请添加 UICONTEXT_NoSolution属性到您的主 Package 类:

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

否则,只有当用户或其他模块调用其命令或服务时,才会加载包。

关于visual-studio-2012 - 在同一个项目中部署MEF组件和VS包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19168068/

相关文章:

c# - 分析 C# 和 mscorlib.ni.dll

visual-studio-2010 - 如何从 EnvDTE.Window 中获取 IVsDropdownBar?

visual-studio-extensions - Visual Studio Gallery 报告 Express SKU 的模板 VSIX

visual-studio-2012 - 将新的 GUID 插入到 Visual Studio 2012

visual-studio - 删除 Visual Studio 2013 中未使用的 DLL 引用

visual-studio - Visual Studio 2015 无法加载包,因为 Microsoft.VisualStudio.Shell.15.0 无法加载

visual-studio-2012 - 尝试在 Visual Studio C# 中使用 Microsoft.Kinect 命名空间

c++ - 我将如何在 visual studio 2012 中启动 OpenGL 项目?

c# - 目标框架中缺少“WindowsBase”、 'PresentationCore'、 'PresentationFramework'

c++ - 使用 EIGEN 定义动态矩阵