我一直在开发一个小的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);
文件)它不起作用。有一个命令没有引用任何其他程序集中的任何一个正常工作,然后有另一个命令执行它只是无声地失败。
查看.vsix
和C:\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的扩展程序提供程序已正确注册。
答案 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中的依赖类库的名称。