在项目模板使用IWizard没有GAC安装组件?(Using IWizard in an item

2019-09-01 06:00发布

我想创建一个包含向导(IWizard接口)的自定义项模板。

上http://msdn.microsoft.com/en-us/library/vstudio/ms171411%28v=vs.100%29.aspx和其他一些地方它总是描述了包含向导中的组件具有安装在GAC 。 我想我的分发模板我的组织,而不是每个人都有权利,任何安装到GAC。

所以,我想知道,有没有办法有一个包含模板ZIP或VSIX文件中的向导代码的程序集?

在我看来,这应该是一个普遍的问题?

任何帮助如何分发自定义向导和模板的项目没有任何GAC安装?

Answer 1:

大量的研究后,我发现了一个办法做到这一点。 通过这种方法,可以包括与IWizard落实到VSIX文件汇编,即使没有签署它,并让它在运行时可用。 无需与GAC拨弄。

你需要3个项目在您的解决方案

  1. 该项目VSIX(我们称之为MyExtension)
  2. 项目模板项目(我们称之为MyTemplate的
  3. 一个普通类库项目为向导代码(我们称之为MyWizardImpl)

里面MyWizardImpl你需要实现IWizard接口,在任意波形类。 (我们称之为MyWizardImpl.ItemTemplateWizard1)。 当编译这个,你作为输出

<solutiondir>\MyWizardImpl\bin\Debug\MyWizardImpl.dll

现在,在MyTemplate的\ MyTemplate.vstemplate,你需要引用它

<WizardExtension>
    <Assembly>MyWizardImpl</Assembly>
    <FullClassName>MyWizardImpl.ItemTemplateWizard1</FullClassName>
</WizardExtension>

最棘手的部分是最后:包括VSIX内组装的方式,它可以被应用ItemTemplate中时被加载。

  • 创建一个文件夹MyExtension \组件
  • 在Solution Explorer中,用鼠标右键单击该文件夹,然后选择添加 - >现有项...
  • 在“添加现有项目”对话框,定位到创建MyWizardImpl.dll。 Add按钮,点击小箭头并选择“添加链接”(防止VS使得DLL的一个副本)
  • 在此链接的属性,选择BuildAction的=内容,IncludeInVSIX =真
  • 打开一个XML编辑器(或记事本)的vsixmanifest,和装配的行添加到节

例:

<Content>
   <Assembly AssemblyName="MyWizardImpl">Assemblies\MyWizardImpl.dll</Assembly>
</Content>

构建和测试解决方案,向导代码应使用模板时立即运行。

如果你需要在你的VSIX多个模板,你只需要添加额外的ItemTemplate项目。 所有向导可以进入同样的MyWizardImpl组装。



文章来源: Using IWizard in an item template without installing assembly in GAC?