vs2015扩展实现itemamexplorersection的CompositionContractMismatchE
本文关键字:CompositionContractMismatchE itemamexplorersection 实现 扩展 vs2015 | 更新日期: 2023-09-27 18:07:36
我正在尝试更新我的Visual Studio扩展Diff所有文件以支持Visual Studio 2015。在VS 2012和2013中一切正常,但在2015年,当我打开团队资源管理器Pending Changes窗口时,它会抛出以下错误,该窗口应该显示我的新控件:
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()
这篇博文解释了VS 2015从MEF v1移动到v2,我认为这可能是问题的一部分,但我不太确定。我相当确定,当它试图处理我的VSPackage控制类上的以下属性时,会发生错误:
[TeamExplorerSection(PendingChangesSection.SectionId, TeamExplorerPageIds.PendingChanges, 35)]
知道问题是什么或如何解决吗?
这个项目是开源的,所以你可以下载它,如果你愿意,可以重现这个问题。你可以从这里获取源代码,只要确保你得到了"AddVs2015Support"分支。
所以事实证明,我已经在VS 2015项目中包含了2015 (v14.0) TFS程序集,但在它们的参考属性中特定版本被设置为False。对于TFS汇编引用,我将其翻转为True,现在它按预期工作。
我也在MSDN论坛上发布了这个问题,他们能够为我指出正确的方向。