我为VS 2010创建了一个部署项目模板的扩展。项目模板使用基于此模板创建新项目时调用的自定义向导(在特定程序集中)。
我想在VSIX中打包包含向导的程序集,以便它可以在模板可以找到的地方部署(我知道GAC不是VSIX的选项)。
基本上,如果我将程序集部署到GAC,请安装VSIX,然后创建项目,成功调用向导。 如果我在不首先部署程序集的情况下执行相同操作,则在创建项目时项目模板找不到程序集。
我的问题是:如何使用VSIX包部署项目模板及其所需的程序集?
感谢您的帮助
编辑:我在安装程序项目中将向导程序集引用的VSIX子路径更改为“ProjectTemplates”,并相应地更新了vsixmanifest内容程序集引用。它似乎现在有效。
答案 0 :(得分:16)
您无需在GAC中获取包含IWizard实现的程序集。您可以在extension.vsixmanifest文件中将其声明为内容部分中的Assembly element。
不幸的是,这似乎没有在任何地方得到很好的记录。
唯一棘手的部分是确保AssemblyName属性具有正确的值。
答案 1 :(得分:4)
我没有运气装配元素技术,所以万一其他人遇到同样的问题,这是另一个解决方案。
Visual Studio使用BindingPaths注册表项查找向导DLL。如果在BindingPaths的子项中添加包含DLL的文件夹,则Visual Studio将找到您的DLL。
要从VSIX执行此操作,请在VSIX项目中创建.pkgdef文件。将其在VSIX属性中的Include设置为True,并将以下文本粘贴到其中:
[$RootKey$\BindingPaths\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}]
"$PackageFolder$"=""
(其中X代表包GUID,但我怀疑任何GUID都会这样做。)
答案 2 :(得分:2)
这对我有用:
[$RootKey$\BindingPaths\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}]
"$PackageFolder$"=""
但是汇编元素不起作用。