VSIX没有在VS 2015中安装依赖项

时间:2016-08-10 13:56:01

标签: visual-studio-2015 vsix

我一直在开发一个小的Visual Studio扩展(纯粹用于内部使用),它由VSIX项目本身组成,然后引用另一个dll(在同一个解决方案中)然后引用其他项目(也在相同的解决方案)。当我调试扩展并在Visual Studio的实验实例中运行它时,这一切都正常。但是,如果我尝试在Visual Studio中安装VSIX for real(通过双击function modify(o) { /* set prop here */} var objects = _.flatMap(array, function(o) { return o.values; }); _.forEach(objects, modify); 文件)它不起作用。有一个命令没有引用任何其他程序集中的任何一个正常工作,然后有另一个命令执行它只是无声地失败。

查看.vsixC:\Users\matt.burland\AppData\Local\Microsoft\VisualStudio\14.0Exp\Extensions下的安装,我可以看到区别在于VSIX没有安装的其他依赖项。

我在VS2010上看到了这个问题:VSIX package doesn't include localized resources of referenced assembly

但那里的解决方案似乎并不相关。我没有看到要设置的C:\Users\matt.burland\AppData\Local\Microsoft\VisualStudio\14.0\Extensions属性。

我尝试查看Output Groups Included in VSIX,它有一个依赖项标签。我选择了source.extension.vsixmanifest,已选择New作为来源,选择了我的一个项目,选择了A project in current solution,但当我点击Embed in this VSIX时收到错误消息:

  

VSIX Manifest Editor

     

在CATID {2F0FA3B8-C855-4a4e-95A5-CB45C67D6C27}下找不到名称'VsixProjectReferenceContentItemObjectExtender'的扩展器。确保此Extender的扩展程序提供程序已正确注册。

1 个答案:

答案 0 :(得分:0)

我意识到我应该关注资产而不是依赖关系,但是我无法使用清单编辑器添加类似错误的资产。所以我在一个新的解决方案中创建了一个全新的空VSIX项目,添加了一个空类库,在VSIX项目中引用它,然后查看了清单编辑器。无论出于何种原因,我能够毫无问题地添加组件。

然后查看XML编辑器中的.vsixmanifest文件,我可以找出引用程序集的正确语法并将其复制到我的实际项目中。为了记录(因为.vsixmanifest上的文档在这里没有提供任何信息),它看起来像这样:

<Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:ProjectName="MyProject" 
       Path="|MyProject|" AssemblyName="|MyProject;AssemblyName|" />

其中MyProject是解决方案中需要包含在VSIX中的依赖类库的名称。