正如标题所说,我已经基于" Visual Studio Package"开发了一个VSIX软件包。 VS2013中的模板项目。
这是一个非常简单的扩展,它为文本编辑器添加了一个装饰层,代码为here。
我试图为VS2012添加兼容性,但没有运气。
我已经修改了.vsixmanifest中的安装目标,事实上,当我启动安装程序时,它会询问我是否也要安装到VS2012。扩展程序安装得很好,但是我在IWpfTextViewCreationListener上激活了一个问题(只要我打开一个文本文件进行编辑),它似乎与项目中引用的DLL版本有关。 / p>
我在ActivityLog中得到的是:
<entry>
<record>862</record>
<time>2014/10/28 11:23:29.757</time>
<type>Error</type>
<source>Editor or Editor Extension</source>
<description>System.ComponentModel.Composition.CompositionContractMismatchException: Cannot cast the underlying exported value of type 'Recoding.WhereAmI.WhereAmIFactory (ContractName="Microsoft.VisualStudio.Text.Editor.IWpfTextViewCreationListener")' to type 'Microsoft.VisualStudio.Text.Editor.IWpfTextViewCreationListener'.
 at System.ComponentModel.Composition.ExportServices.CastExportedValue[T](ICompositionElement element, Object exportedValue)
 at System.ComponentModel.Composition.ExportServices.GetCastedExportedValue[T](Export export)
 at System.ComponentModel.Composition.ExportServices.<>c__DisplayClass4`2.<CreateStronglyTypedLazyOfTM>b__1()
 at System.Lazy`1.CreateValue()
 at System.Lazy`1.LazyInitValue()
 at System.Lazy`1.get_Value()
 at Microsoft.VisualStudio.Text.Utilities.GuardedOperations.InstantiateExtension[TExtension,TMetadata](Object errorSource, Lazy`2 provider)</description>
</entry>
它引用了Microsoft.VisualStudio.Text.UI.Wpf.dll这是12.0,我试图使用&#34; Spefic Version&#34;标记引用。 = false,但问题仍然存在。
作为旁注,我无法在实验模式下运行VS2012加载扩展。我更改了&#34;启动外部程序&#34;项目选项到Visual Studio 11.0 \ Common7 \ IDE \ devenv.exe,它以实验模式运行,但不加载扩展名。为了测试它,我要制作VSIX并将其安装到VS2012(这很痛苦)。
有关如何进行的任何建议?它与装配误差真的有关吗?
答案 0 :(得分:1)
您必须将Microsoft.VisualStudio.Text.UI.Wpf.dll从版本12.0更改为11.0。
为了与Visual Studio 2012向下兼容,您必须使用11.0程序集。
你可以通过NuGet获得它们:
PM> Install-Package VSSDK.Text.11