c# - 从类库创建 vsix 包

标签 c# visual-studio-2012

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

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

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

当我尝试将 Assets 注册为 Microsoft.VisualStudio.ToolboxControl 时,出现错误 “项目中不存在目标“PkgdefProjectOutputGroup”。”。我在谷歌上找到的信息对我没有帮助。

我不确定这里的问题是什么。我可能错过了一些步骤,但我不知 Prop 体是什么。

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

编辑:我发现是什么给了我'The target "PkgdefProjectOutputGroup"does not exist in the project.' 消息,是我没有给出值 Assets 窗口中的“嵌入此文件夹”文本框。构建通过,但组件在 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 中找到了安装位置(最后一部分可能是随机生成的)和所有文件都在它们应该在的位置,工具箱中仍然没有控件(从这个位置手动添加它们也可以)。

最佳答案

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

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

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

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项目,这个错误应该可以解决。

关于c# - 从类库创建 vsix 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35288798/

相关文章:

c# - 我可以通过 Telegram Bot API 通过用户 ID 获取电话号码吗?

c# - 将 datagridview 行 move 到另一个 datagridView

c# - 提高 XmlSerializer 的性能

c++ - OpenCV 的 Visual Studio 错误?

c# - 如何使用来自 t4 模板的 app.config 中的自定义部分

c# - 如何在 C# 中编码 SIZE 结构?

c++ - 从VS2008升级后,在VS2012中建工程报错

c# - 我如何从文本文件中获取值并选择具有该值的复选框?

visual-studio-2012 - 此应用程序由于许可证问题而无法启动

c++ - MySQL 连接器 c++ 不包含 libmysql.lib