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在构造函数和初始化程序中有一个log命令,该命令应转到调试输出,但不会显示日志消息。 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++ - 如何对 .exe 附带的外部文件进行编码

c# - 乘除运算符周围的空格被IDE删除了,如何保留?

asp.net-mvc-4 - sln 和 vssscc 总是在我待定的 tfs 更改中

visual-studio - 如何判断事件文档是否为文本文档?

c# - Visual Studio Extension (VSPackage) 在所有实验实例中运行,但在安装为 .vsix 后不运行,VS2010 除外

c# - 如何注册我的 visual studio 扩展来运行事件?

c++ - 我应该如何在 VS 2012 中使用 Juce 框架将内容发送到输出窗口

visual-studio-2012 - 发布 MVC 4 应用程序异常..,指定的路径、文件名或两者都太长

css - 使用 Web 编译器(Visual Studio 扩展)禁用所有 css 缩小

c# - SettingsManager.GetWritableSettingsStore 可用于在 Visual Studio 扩展中导入/导出?