Visual studio 2010 使用VSIX部署包含项目模板IWizard的程序集

Visual studio 2010 使用VSIX部署包含项目模板IWizard的程序集,visual-studio-2010,deployment,wizard,vsix,Visual Studio 2010,Deployment,Wizard,Vsix,我已经为VS2010创建了一个扩展,它部署了一个项目模板。项目模板使用自定义向导(在特定程序集中),在基于此模板创建新项目时调用该向导 我想在VSIX中打包包含向导的程序集,以便将它部署到模板可以找到它的地方(我知道VSIX不支持GAC) 基本上,如果我将程序集部署到GAC,安装VSIX,然后创建项目,向导将成功调用。 如果不首先部署程序集而执行相同操作,则在创建项目时,项目模板找不到程序集 我的问题是:如何使用VSIX包部署项目模板及其所需的程序集 谢谢你的帮助 编辑:我在安装程序项目中将向导

我已经为VS2010创建了一个扩展,它部署了一个项目模板。项目模板使用自定义向导(在特定程序集中),在基于此模板创建新项目时调用该向导

我想在VSIX中打包包含向导的程序集,以便将它部署到模板可以找到它的地方(我知道VSIX不支持GAC)

基本上,如果我将程序集部署到GAC,安装VSIX,然后创建项目,向导将成功调用。 如果不首先部署程序集而执行相同操作,则在创建项目时,项目模板找不到程序集

我的问题是:如何使用VSIX包部署项目模板及其所需的程序集

谢谢你的帮助


编辑:我在安装程序项目中将向导程序集引用的VSIX子路径更改为“ProjectTemplates”,并相应地更新了vsixmanifest内容程序集引用。它现在似乎可以工作了。

您不需要在GAC中获得包含IWizard实现的程序集。您只需在extension.vsixmanifest文件中将其声明为内容部分中的

不幸的是,这似乎在任何地方都没有很好的记录


唯一棘手的部分是确保AssemblyName属性具有正确的值。

我运气不佳,无法使用Assembly元素技术,因此,如果其他人遇到同样的问题,这里有另一个解决方案

Visual Studio使用BindingPaths注册表项查找向导DLL。如果将包含DLL的文件夹添加到BindingPath的子项中,则Visual Studio将找到您的DLL

要从VSIX执行此操作,请在VSIX项目中创建.pkgdef文件。将其Include in VSIX属性设置为True,并将以下文本粘贴到其中:

[$RootKey$\BindingPaths\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}]
"$PackageFolder$"=""
(其中Xs表示包GUID,尽管我怀疑任何GUID都可以)。

这对我来说很有用:

[$RootKey$\BindingPaths\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}]
"$PackageFolder$"=""

但是汇编元素不起作用。

谢谢,我已经根据您提供的页面编辑了内容标签。vsixmanifest的GUI生成了一个奇怪的引用,类似于| AssemblyName |。但是项目模板仍然找不到程序集。我如何告诉它在哪里可以找到程序集?你能用更多的细节更新你的问题吗?您到底更改了哪些文件,以及如何更改?谢谢。@I33t也许可以看一看我找到了一个更有用的答案[这里][1][1]:@itowlson如何创建.pkgdef文件?你用过什么工具吗?因为在addnewitem中,我没有获得.pkgdef文件的选项,所以我创建了一个简单的.pkgdef文件[$RootKey,但它没有按预期工作。我未能创建.pkgdef文件,是否有任何实用程序,我已直接创建了一个具有相同扩展名的文件,并将其添加到该文件的上一行,但我未能使用此VSIX创建项目。出现相同错误:(您能帮助我吗