从类库创建vsix包

时间:2016-02-09 09:52:36

标签: c# visual-studio-2012

我有一个作为类库创建的项目。该库包含许多可在Windows窗体应用程序中使用的控件。现在我想创建一个安装包(* .vsix),将这些控件嵌入到visual studio工具箱窗口中。我还有一个充满Web控件的项目,但此时我想专注于Win控件的任务部分。

当我在具有此项目的解决方案中时,控件在工具箱窗口中可见。

我创建了一个vsix项目,并将组件项目的dll引用为Microsoft.VisualStudio.Assembly资产。构建过程创建了我需要的vsix文件。当我在具有全新VS安装的系统上运行它时,它会毫无问题地完成安装过程,但组件不会显示在工具箱中。

当我尝试将资产注册为Microsoft.VisualStudio.ToolboxControl时,我收到错误'The target "PkgdefProjectOutputGroup" does not exist in the project.'。我在谷歌上找到的信息对我没有帮助。

我不确定这里的问题是什么。我可能错过了几步,但我不知道到底是什么。

我还发现有关WiX工具集的文章可以创建包,但我不确定这是否是我要找的东西。

编辑:我发现是什么给了我'The target "PkgdefProjectOutputGroup" does not exist in the project.'消息,我没有在资产窗口中为“嵌入此文件夹”文本框中提供值。构建传递,但组件仍然在VS中不可见。

编辑2 :经过几天的修补后,我仍然无法为控件创建包。我使用this文章作为我的主要参考文献以及其他一些文章,似乎没有什么可以做到的。

我尝试使用作为示例提供的TCI安装程序应用。我首先在样本控件上使用它,它完美无缺,但在我自己的库中使用它没有产生任何结果。我已经在我自己的库中添加了一个示例控件,以检查我是否会发疯,但控件仍未显示在工具箱中。我添加的控件不能更简单:

[ToolboxBitmap(typeof(IdiotControl))]
[ToolboxItem(true)]
public partial class IdiotControl : UserControl
{
    public IdiotControl()
    {
        InitializeComponent();
    }
}

当我想手动添加dll中的控件时(右键单击工具箱选项卡 - >选择项目 - >浏览dll),控件会显示出来,我可以将它们拖放到表单上但是那是我不能接受的。

我还在C:\Users\John\AppData\Local\Microsoft\VisualStudio\11.0\Extensions\doeehng3.0ko中找到了安装位置(最后一部分可能是随机生成的),所有文件都应该是它们的位置,工具箱中仍然没有控件(从这个位置手动添加它们也有效) )。

1 个答案:

答案 0 :(得分:0)

花了2天之后,终于可以解决将DLL应用程序的引用添加到Visual C ++的VSIX项目中时出现的以下错误:

项目中不存在目标“ PkgdefProjectOutputGroup”。

只需打开要添加的DLL应用程序的项目文件.csproj.vcxproj,作为对VSIX项目的引用,然后最后编辑以下几行:

Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v15.0\VSSDK\Microsoft.VsSDK.Cpp.targets"

Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets"

Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v15.0\VSSDK\Microsoft.VsSDK.Cpp.Overrides.targets

然后构建VSIX项目,应解决此错误。