无法调试VSIX项目:“预计导出ITextEditorFactoryService但找到0”

时间:2017-09-15 07:42:06

标签: visual-studio visual-studio-2017 vsix

我在几个VSIX项目中工作,突然之间,由于某种原因,我无法正确调试它们。当我运行项目时,实验VS实例打开没有问题,但是一旦我加载解决方案,问题就开始了。

首先,如果我正在加载的解决方案处于源代码管理下,我会收到以下错误消息:

  

'GitCollaborationPackage'包未正确加载。   问题可能是由配置更改引起的   或者安装另一个分机。

还有一个指向日志文件的链接,该文件显示了一条显然不是很有用的错误消息:

  

LegacySitePackage for package [GitCollaborationPackage]失败来源:   “”描述:灾难性的失败(HRESULT的例外情况:   0x8000FFFF(E_UNEXPECTED))

之后解决方案加载,但是一旦我尝试打开文件,我就会收到此错误:

  

预计1个带有合同名称的出口   “Microsoft.VisualStudio.Text.Editor.ITextEditorFactoryService”但是   在应用适用的约束后找到0。

我没有对我的项目进行任何重大更改,但以防万一我创建了一个全新的VSIX项目并立即运行,结果相同。

正如MSDN中所建议的那样,我尝试delete Visual Studio's component cache and reset Visual Studio's settings,但无济于事。

那么这里发生了什么?我该怎么做才能解决这个问题?

更新:一些新发现:

  • 使用devenv /safemode运行Visual Studio时,问题仍然存在。
  • VS专业版正在发生这种情况。我也安装了社区版,并且在那个版本中我可以毫无问题地进行调试。该死的,那个版本也被破坏了! : - (

更新2:修复Visual Studio没有帮助。

2 个答案:

答案 0 :(得分:0)

这不是答案,但是已经有两年了,问题仍然很严重,所以我认为有必要添加一些细节以便将来进行调查。

今天在我的计算机上,实验实例正在运行,但现在失败了。初始错误最常读取

“ RoslynPackage”软件包未正确加载。该问题可能是由于配置更改或安装其他扩展程序引起的。您可以通过检查文件'C:\ Users ... \ AppData \ Roaming \ Microsoft \ VisualStudio \ 15.0_b0b65856Exp \ ActivityLog.xml'获得更多信息。

但是失败的软件包有时会有所不同,无论如何,第二个错误(涉及ITextEditorFactoryService)很快就会出现。

在AppData中删除两个VisualStudio \ 15.0_b0b65856Exp文件夹无济于事,所以我尝试卸载并重新安装VS2017。那也没有帮助。

我尝试调试“已知良好的” Visual Studio扩展。同样的错误。我尝试加载一个简单的文本文件。同样的错误。

因此,我转到了Visual Studio 2019社区(在故障开始之前已经安装了该社区)。 VS 2019也失败,但其行为略有不同:第一个错误消息未出现,第二个错误已稍作修改(请注意“ 2”):

预期合同名称为“ Microsoft.VisualStudio.Text.Editor.ITextEditorFactoryService2”的1个导出,但在应用适用的约束后发现0。

我注意到,当我重新安装VS2017时,它仍然使用了先前安装中剩下的设置。当实验实例开始时,它会问我想要哪个主题。我告诉它使用“蓝色主题”,并且使用了几秒钟,但是随后它加载了“黑暗主题”,该主题与主实例使用的主题相同。这导致了一个假设,即故障是由实验实例选择加载的“僵尸”配置设置引起的,而这个设置我们只是不知道如何摆脱。但是,我尝试立即将.cs文件拖到实验实例上(在加载深色主题之前),并且仍然出现错误。另外,我尝试了“工具”->“导入和导出设置”->“重置所有设置(在实验实例内部)”,这没有帮助。

在我的情况下,命令行参数/rootsuffix Exp /safemode阻止了错误的发生,但这是没有用的,因为它还会阻止我尝试调试的VSIX的加载。

这是ActivityLog.xml中提到“错误”一词的条目:

  <entry>
    <record>523</record>
    <time>2020/03/11 00:20:56.182</time>
    <type>Warning</type>
    <source>VisualStudio</source>
    <description>Unexpected system error mode before loading package [ProviderPackage]</description>
    <guid>{5F2E5E42-4192-4D79-A0D8-1D881E808829}</guid>
  </entry>

  <entry>
    <record>527</record>
    <time>2020/03/11 00:20:56.494</time>
    <type>Warning</type>
    <source>VisualStudio</source>
    <description>Unexpected system error mode before loading package [Microsoft.VisualStudio.Shell.Connected.Packages.PathTrustVerifier.PathTrustVerifierPackage]</description>
    <guid>{2F6B5046-3BB0-4825-B344-3F4238921119}</guid>
  </entry>

  <entry>
    <record>531</record>
    <time>2020/03/11 00:20:56.511</time>
    <type>Warning</type>
    <source>VisualStudio</source>
    <description>Unexpected system error mode before loading package [CSharpPackage]</description>
    <guid>{13C3BBB4-F18F-4111-9F54-A0FB010D9194}</guid>
  </entry>

  <entry>
    <record>534</record>
    <time>2020/03/11 00:20:56.590</time>
    <type>Warning</type>
    <source>VisualStudio</source>
    <description>Unexpected system error mode before loading package [RoslynPackage]</description>
    <guid>{6CF2E545-6109-4730-8883-CF43D7AEC3E1}</guid>
  </entry>

  <entry>
    <record>537</record>
    <time>2020/03/11 00:20:56.811</time>
    <type>Warning</type>
    <source>VisualStudio</source>
    <description>Unexpected system error mode before loading package [ErrorListPackage]</description>
    <guid>{4A9B7E50-AA16-11D0-A8C5-00A0C921A4D2}</guid>
  </entry>

  <entry>
    <record>541</record>
    <time>2020/03/11 00:20:57.014</time>
    <type>Warning</type>
    <source>VisualStudio</source>
    <description>Unexpected system error mode before loading package [Text Management Package]</description>
    <guid>{F5E7E720-1401-11D1-883B-0000F87579D2}</guid>
  </entry>

  <entry>
    <record>545</record>
    <time>2020/03/11 00:20:57.026</time>
    <type>Warning</type>
    <source>VisualStudio</source>
    <description>Unexpected system error mode before loading package [Microsoft.VisualStudio.Editor.Implementation.EditorPackage]</description>
    <guid>{E269B994-EF71-4CE0-8BCD-581C217372E8}</guid>
  </entry>

  <entry>
    <record>548</record>
    <time>2020/03/11 00:20:57.457</time>
    <type>Error</type>
    <source>VisualStudio</source>
    <description>LegacySitePackage failed for package [RoslynPackage]Source: &apos;Microsoft.VisualStudio.Composition&apos; Description: Expected 1 export(s) with contract name &quot;Microsoft.VisualStudio.LanguageServices.Implementation.TableDataSource.VisualStudioDiagnosticListTableCommandHandler&quot; but found 0 after applying applicable constraints.&#x000D;&#x000A;Microsoft.VisualStudio.Composition.CompositionFailedException: Expected 1 export(s) with contract name &quot;Microsoft.VisualStudio.LanguageServices.Implementation.TableDataSource.VisualStudioDiagnosticListTableCommandHandler&quot; but found 0 after applying applicable constraints.&#x000D;&#x000A;   at Microsoft.VisualStudio.Composition.ExportProvider.GetExports(ImportDefinition importDefinition)&#x000D;&#x000A;   at Microsoft.VisualStudio.Composition.ExportProvider.GetExports[T,TMetadataView](String contractName, ImportCardinality cardinality)&#x000D;&#x000A;   at Microsoft.VisualStudio.Composition.ExportProvider.GetExport[T,TMetadataView](String contractName)&#x000D;&#x000A;   at Microsoft.VisualStudio.Composition.ExportProvider.GetExport[T](String contractName)&#x000D;&#x000A;   at Microsoft.VisualStudio.Composition.ExportProvider.GetExport[T]()&#x000D;&#x000A;   at Microsoft.VisualStudio.Composition.ExportProvider.GetExportedValue[T]()&#x000D;&#x000A;   at Microsoft.VisualStudio.ComponentModelHost.ComponentModel.GetService[T]()&#x000D;&#x000A;   at Microsoft.VisualStudio.LanguageServices.Setup.RoslynPackage.LoadComponentsInUIContext()&#x000D;&#x000A;   at Microsoft.VisualStudio.LanguageServices.Implementation.LanguageService.AbstractPackage.LoadComponentsInUIContextOnceSolutionFullyLoaded()&#x000D;&#x000A;   at Microsoft.VisualStudio.LanguageServices.Setup.RoslynPackage.Initialize()&#x000D;&#x000A;   at Microsoft.VisualStudio.Shell.Package.Microsoft.VisualStudio.Shell.Interop.IVsPackage.SetSite(IServiceProvider sp)</description>
    <guid>{6CF2E545-6109-4730-8883-CF43D7AEC3E1}</guid>
    <hr>80131500</hr>
    <errorinfo></errorinfo>
  </entry>

  <entry>
    <record>549</record>
    <time>2020/03/11 00:20:57.469</time>
    <type>Error</type>
    <source>VisualStudio</source>
    <description>SetSite failed for package [RoslynPackage](null)</description>
    <guid>{6CF2E545-6109-4730-8883-CF43D7AEC3E1}</guid>
    <hr>80131500</hr>
    <errorinfo></errorinfo>
  </entry>

  <entry>
    <record>551</record>
    <time>2020/03/11 00:20:57.479</time>
    <type>Warning</type>
    <source>VisualStudio</source>
    <description>Unexpected system error mode before loading package [Visual Studio Component Enumerator Package]</description>
    <guid>{588205E0-66E0-11D3-8600-00C04F6123B3}</guid>
  </entry>

  <entry>
    <record>555</record>
    <time>2020/03/11 00:20:57.490</time>
    <type>Error</type>
    <source>VisualStudio</source>
    <description>End package load [RoslynPackage]</description>
    <guid>{6CF2E545-6109-4730-8883-CF43D7AEC3E1}</guid>
    <hr>80131500</hr>
    <errorinfo></errorinfo>
  </entry>

注意:上面的错误是ActivityLog.xml中的最后一个条目;第二个错误没有显示在这里。

答案 1 :(得分:0)

对我来说,这是在使用 IViewTaggerProvider 而不是 IViewProvider 后开始发生的。把它改回来后,它就起作用了。

不知道为什么,而且我确实需要能够使用 IViewTaggerProvider,但我希望这能让其他人获得更多见解。

编辑:好的,我解决了!这是因为我的 Export 属性中的类型与实现的类型不匹配。

所以我改变了:

    [Export(typeof(ITaggerProvider))]
    [ContentType("code")]
    [TagType(typeof(ToDoTag))]
    class ToDoTaggerProvider : IViewTaggerProvider
    { ... }

进入:

    [Export(typeof(IViewTaggerProvider))]
    [ContentType("code")]
    [TagType(typeof(ToDoTag))]
    class ToDoTaggerProvider : IViewTaggerProvider
    { ... }