1

我有一个具有程序集属性的 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

4

2 回答 2

3

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

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

MyAssembly,版本=11.0.0.0,文化=中性,PublicKeyToken= b03f5f7f11d50a3a

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

于 2012-07-19T21:00:06.013 回答
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/

于 2012-07-20T18:55:00.827 回答