2

以下情景。我在 VS 2017 中创建了一个新的 VSIX 项目。我在那里插入了一个新的工具窗口。此外,我创建了一个类库。生成的结构如下: 项目结构

我唯一改变的是

  • 我向该类添加了两个属性,ToolWindow1Package以便在加载解决方案后立即加载它

    [ProvideAutoLoad(VSConstants.UICONTEXT.SolutionHasSingleProject_string)]
    [ProvideAutoLoad(VSConstants.UICONTEXT.SolutionHasMultipleProjects_string)]
    
  • Initialize方法_

    protected override void Initialize()
    {
        ToolWindow1Command.Initialize(this);
        base.Initialize();
        Class1 class1 = new Class1();
        Console.WriteLine(class1);
    }
    

当我加载解决方案时,无法使用 ActivityLog 中的以下条目加载包

<entry>
   <record>1396</record>
   <time>2018/01/10 15:16:12.081</time>
   <type>Error</type>
   <source>VisualStudio</source>
   <description>LegacySitePackage failed for package [ToolWindow1Package]Source: &apos;TestExtension&apos; Description: Could not load file or assembly &apos;TestLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&apos; or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)&#x000D;&#x000A;System.IO.FileLoadException: Could not load file or assembly &apos;TestLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&apos; or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)&#x000D;&#x000A;File name: &apos;TestLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&apos;&#x000D;&#x000A;   at TestExtension.ToolWindow1Package.Initialize()&#x000D;&#x000A;   at Microsoft.VisualStudio.Shell.Package.Microsoft.VisualStudio.Shell.Interop.IVsPackage.SetSite(IServiceProvider sp)&#x000D;&#x000A;&#x000D;&#x000A;</description>
   <guid>{673860A0-BAF8-46CB-BDFD-F758C4C6EE3C}</guid>
   <hr>80131044</hr>
   <errorinfo></errorinfo>

库的 dll 仍然在扩展 dll 的文件夹中:

文件

我什至尝试将库作为资产添加到 .vsixmanifest 中而不改变情况。有谁知道这个问题和解决方法?

4

1 回答 1

3

如错误消息所述,您必须通过将 key.snk 文件添加到项目中来对 TestLibrary dll/项目进行强签名。(项目属性,签名)

于 2018-01-10T16:36:05.943 回答