我有一个创建为类库的项目。该库包含许多可在 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/