VSIX 未在 VS 2015 中安装依赖项
VSIX not installing dependencies in VS 2015
我一直在开发一个小的 Visual Studio 扩展(纯粹供内部使用),它由 VSIX 项目本身组成,然后引用另一个 dll(在同一解决方案中),然后引用一些其他项目(也在同一解决方案中)。当我在 Visual Studio 的实验实例中调试扩展并 运行 它时,这一切都工作正常。但是,如果我尝试在 Visual Studio 中真正安装 VSIX(通过双击 .vsix
文件)它不起作用。有一个命令不引用其他程序集的任何内容,但工作正常,然后有另一个命令执行此操作,但无声无息地失败了。
查看 C:\Users\matt.burland\AppData\Local\Microsoft\VisualStudio.0Exp\Extensions
和 C:\Users\matt.burland\AppData\Local\Microsoft\VisualStudio.0\Extensions
下的安装,我可以看出不同之处在于 VSIX 未安装其他依赖项。
我看到了这个针对 VS2010 的问题:VSIX package doesn't include localized resources of referenced assembly
但那里的解决方案似乎并不相关。我没有看到要设置的 Output Groups Included in VSIX
属性。
我试着查看 source.extension.vsixmanifest
,它有一个依赖项选项卡。我选择了 New
,选择了 A project in current solution
作为源,选择了我的一个项目,选择了 Embed in this VSIX
,但是当我点击 Ok
时,我收到一条错误消息:
VSIX Manifest Editor
No Extenders could be found for the name 'VsixProjectReferenceContentItemObjectExtender' under the CATID {2F0FA3B8-C855-4a4e-95A5-CB45C67D6C27}. Make sure that the extender provider for this Extender is correctly registered.
我意识到我应该查看资产而不是依赖项,但我无法使用清单编辑器将其添加为资产并出现类似错误。因此,我在新解决方案中创建了一个全新的空 VSIX 项目,添加了一个空 class 库,在 VSIX 项目中引用它,然后查看清单编辑器。无论出于何种原因,我都能够毫无问题地添加程序集。
然后在 XML 编辑器中查看 .vsixmanifest
文件,我可以找出引用程序集的正确语法并将其复制到我的实际项目中。作为记录(因为 .vsixmanifest
上的文档在这里没有提供任何信息),它看起来像这样:
<Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:ProjectName="MyProject"
Path="|MyProject|" AssemblyName="|MyProject;AssemblyName|" />
其中 MyProject
是解决方案中需要包含在 VSIX 中的依赖 class 库的名称。
我一直在开发一个小的 Visual Studio 扩展(纯粹供内部使用),它由 VSIX 项目本身组成,然后引用另一个 dll(在同一解决方案中),然后引用一些其他项目(也在同一解决方案中)。当我在 Visual Studio 的实验实例中调试扩展并 运行 它时,这一切都工作正常。但是,如果我尝试在 Visual Studio 中真正安装 VSIX(通过双击 .vsix
文件)它不起作用。有一个命令不引用其他程序集的任何内容,但工作正常,然后有另一个命令执行此操作,但无声无息地失败了。
查看 C:\Users\matt.burland\AppData\Local\Microsoft\VisualStudio.0Exp\Extensions
和 C:\Users\matt.burland\AppData\Local\Microsoft\VisualStudio.0\Extensions
下的安装,我可以看出不同之处在于 VSIX 未安装其他依赖项。
我看到了这个针对 VS2010 的问题:VSIX package doesn't include localized resources of referenced assembly
但那里的解决方案似乎并不相关。我没有看到要设置的 Output Groups Included in VSIX
属性。
我试着查看 source.extension.vsixmanifest
,它有一个依赖项选项卡。我选择了 New
,选择了 A project in current solution
作为源,选择了我的一个项目,选择了 Embed in this VSIX
,但是当我点击 Ok
时,我收到一条错误消息:
VSIX Manifest Editor
No Extenders could be found for the name 'VsixProjectReferenceContentItemObjectExtender' under the CATID {2F0FA3B8-C855-4a4e-95A5-CB45C67D6C27}. Make sure that the extender provider for this Extender is correctly registered.
我意识到我应该查看资产而不是依赖项,但我无法使用清单编辑器将其添加为资产并出现类似错误。因此,我在新解决方案中创建了一个全新的空 VSIX 项目,添加了一个空 class 库,在 VSIX 项目中引用它,然后查看清单编辑器。无论出于何种原因,我都能够毫无问题地添加程序集。
然后在 XML 编辑器中查看 .vsixmanifest
文件,我可以找出引用程序集的正确语法并将其复制到我的实际项目中。作为记录(因为 .vsixmanifest
上的文档在这里没有提供任何信息),它看起来像这样:
<Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:ProjectName="MyProject"
Path="|MyProject|" AssemblyName="|MyProject;AssemblyName|" />
其中 MyProject
是解决方案中需要包含在 VSIX 中的依赖 class 库的名称。