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