visual-studio-2010 - 在项目模板中使用 IWizard 而不在 GAC 中安装程序集?

标签 visual-studio-2010 visual-studio templates wizard

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

http://msdn.microsoft.com/en-us/library/vstudio/ms171411%28v=vs.100%29.aspx在其他一些地方,总是描述包含向导的程序集必须安装在 GAC 中。我想在我的组织中分发我的模板,并不是每个人都有权在 GAC 中安装任何东西。

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

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

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

最佳答案

经过大量研究,我找到了一种方法来做到这一点。使用此方法,可以将具有 IWizard 实现的程序集包含到 VSIX 文件中,即使没有对其进行签名,也可以在运行时使用它。无需摆弄 GAC。

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

  • vsix 项目(我们称之为 MyExtension )
  • 一个项目模板项目(我们称之为 MyTemplate )
  • 向导代码的常规类库项目(我们称之为 MyWizardImpl )

  • 在 MyWizardImpl 中,您需要在任意类中实现 IWizard 接口(interface)。 (我们称之为 MyWizardImpl.ItemTemplateWizard1)。编译时,您将获得输出
    <solutiondir>\MyWizardImpl\bin\Debug\MyWizardImpl.dll
    

    现在,在 MyTemplate\MyTemplate.vstemplate 中,您需要引用它
    <WizardExtension>
        <Assembly>MyWizardImpl</Assembly>
        <FullClassName>MyWizardImpl.ItemTemplateWizard1</FullClassName>
    </WizardExtension>
    

    最后是棘手的部分:在 vsix 中包含程序集,以便在应用 ItemTemplate 时可以加载它。
  • 创建一个文件夹 MyExtension\Assemblies
  • 在解决方案资源管理器中,右键单击该文件夹并选择添加 -> 现有项目...
  • 在“添加现有项”对话框中,导航到创建的 MyWizardImpl.dll。在添加按钮上,单击小箭头并选择“添加为链接”(以防止 VS 复制 dll)
  • 在此链接的属性中,选择 BuildAction=Content, IncludeInVSIX=True
  • 在 XML 编辑器(或记事本)中打开 vsixmanifest,并将组装线添加到
  • 部分

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

    构建并测试解决方案,使用模板时,向导代码现在应该运行。

    如果您的 vsix 中需要多个模板,您只需添加额外的 ItemTemplate 项目。所有向导都可以进入同一个 MyWizardImpl 程序集。

    关于visual-studio-2010 - 在项目模板中使用 IWizard 而不在 GAC 中安装程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16244185/

    相关文章:

    c++ - 将使用 stdafx 的 MSVC 项目移植到 xcode 中的简单方法?

    visual-studio - Visual Studio 2017 锁定文件

    c# - C# 的 DataSet WriteXML 转换的奇怪结果

    c++ - 编译时 bool 值 C++ 未知的 constexpr 函数参数

    c++ - 将模板化函数限制为基本类型和派生类型?

    visual-studio-2010 - 我仍可以在Visual Studio 2010中定位.NET Framework 1.1吗?

    asp.net - ModelClientValidationRule 冲突

    c++ - 弯路 Hook : GetVolumeInformation Random Volume Serial

    css - 无法居中数据列表

    html - 在 Luna 管理模板中更改模板颜色