如何在项目模板中使用VsixMainfest中附加的向导程序集?

时间:2012-07-19 19:54:38

标签: visual-studio-2010 visual-studio wizard vsix project-template

我有一个具有程序集属性的vsixmanifest文件。该文件看起来像:

<Content>
<ProjectTemplate>Solution</ProjectTemplate>
<Assembly AssemblyName="SolutionNameWizard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1c39bfcc-223f-4c12-a5dc-55eeca7c61f7">
    Assemblies\SolutionNameWizard.dll
</Assembly>

我知道程序集名称和公钥是正确的。

现在,我正在尝试在我的一个模板中使用此程序集。现在我有:

<WizardExtension>
      <Assembly>SolutionNameWizard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1c39bfcc-223f-4c12-a5dc-55eeca7c61f7</Assembly>
      <FullClassName>SolutionNameWizard.IWizardImplementation</FullClassName>
</WizardExtension>

我有什么遗失的东西吗?当我运行vsix时,我收到以下错误:

A problem was encountered creating the sub project 'test.Web' Error: this template
attemtped to load component assembly 'SolutionNameWizard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1c39bfcc-223f-4c12-a5dc-55eeca7c61f7'.

我知道模板要求程序集在GAC中,我使用vsix的情况也是如此吗?我希望避开GAC,仍然使用我的向导。

编辑:我将公钥更改为答案中建议的正确字符串,但仍然存在问题。

编辑2:除了下面的有用答案之外,这是我完成此过程后写的博客。它链接到我发现非常有帮助的一堆文章:https://thebhwgroup.com/blog/2013/10/visual-studio-templates

2 个答案:

答案 0 :(得分:3)

如果您的程序集是通过VSIX提供的,则不需要在GAC中。

您的PublicKeyToken肯定正确。当你的Guid应该是一个16个字符的十六进制字符串(8个字节)时,你正在使用它。请参阅以下示例:

MyAssembly,Version = 11.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a

通过从VS命令提示符运行sn.exe -T MyAssembly.dll,可以找到程序集的PublicKeyToken值。

答案 1 :(得分:2)

如果有其他人碰巧遇到这个问题,我最后会遵循本指南:http://blog.tonysneed.com/2011/09/14/build-a-multi-project-visual-studio-template/

这使得这个过程(大部分)非常容易。如果有人遇到类似的问题,请随时与我联系,我可以尝试分享我学到的东西。

编辑:这是我在完成此过程后写的简短博客文章。对于偶然发现此事的人可能会有所帮助:http://www.thebhwgroup.com/blog/2013/10/visual-studio-templates/