实现 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,他们能够为我指明正确的方向。
我正在尝试更新我的 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,他们能够为我指明正确的方向。