实现 ITeamExplorerSection 的 VS 2015 扩展中的 CompositionContractMismatchException

CompositionContractMismatchException in VS 2015 Extension implementing ITeamExplorerSection

我正在尝试更新我的 Visual Studio 扩展 Diff All Files 以支持 Visual Studio 2015。在 VS 2012 和 2013 中一切正常,但在 2015 年它会抛出以下错误我打开 Team Explorer Pending Changes Windows,它应该显示我的新控件:

System.ComponentModel.Composition.CompositionContractMismatchException: Cannot cast the underlying exported value of type 'Microsoft.VisualStudio.Composition.NetFxAdapters+MefV1ExportProvider+ComposablePartForExportFactory' to type 'Microsoft.TeamFoundation.Controls.ITeamExplorerSection'.
   at System.ComponentModel.Composition.ExportServices.CastExportedValue[T](ICompositionElement element, Object exportedValue)
   at System.ComponentModel.Composition.ReflectionModel.ExportFactoryCreator.LifetimeContext.GetExportLifetimeContextFromExport[T](Export export)
   at System.ComponentModel.Composition.ReflectionModel.ExportFactoryCreator.<>c__DisplayClass4`2.<CreateStronglyTypedExportFactoryOfTM>b__5()
   at System.ComponentModel.Composition.ExportFactory`1.CreateExport()
   at Microsoft.TeamFoundation.Controls.WPF.TeamExplorer.Framework.TeamExplorerSectionHost.Create()

This blog post 解释说 VS 2015 从 MEF v1 移动到 v2,我认为这可能是问题的一部分,但我不太确定。我相当确定当它尝试处理我的 VSPackage 控件上的以下属性时会发生错误 class:

[TeamExplorerSection(PendingChangesSection.SectionId, TeamExplorerPageIds.PendingChanges, 35)]

对问题可能是什么或如何解决有任何想法吗?

该项目是开源的,如果您愿意,可以下载并重现问题。您可以 grab the source code from here,只要确保您获得 "AddVs2015Support" 分支即可。

提前致谢。

原来我在 VS 2015 项目中包含了 2015 (v14.0) TFS 程序集,但在它们的引用属性中特定版本设置为 False。对于 TFS 程序集引用,我将其设置为 True,它现在按预期工作。

我也发布了 this question in the MSDN Forums,他们能够为我指明正确的方向。