使VS2012兼容为VS2013开发的VSIX扩展

时间:2014-10-28 12:01:27

标签: wpf visual-studio visual-studio-2012 vsix

正如标题所说,我已经基于" 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 &apos;Recoding.WhereAmI.WhereAmIFactory (ContractName=&quot;Microsoft.VisualStudio.Text.Editor.IWpfTextViewCreationListener&quot;)&apos; to type &apos;Microsoft.VisualStudio.Text.Editor.IWpfTextViewCreationListener&apos;.&#x000D;&#x000A;   at System.ComponentModel.Composition.ExportServices.CastExportedValue[T](ICompositionElement element, Object exportedValue)&#x000D;&#x000A;   at System.ComponentModel.Composition.ExportServices.GetCastedExportedValue[T](Export export)&#x000D;&#x000A;   at System.ComponentModel.Composition.ExportServices.&lt;&gt;c__DisplayClass4`2.&lt;CreateStronglyTypedLazyOfTM&gt;b__1()&#x000D;&#x000A;   at System.Lazy`1.CreateValue()&#x000D;&#x000A;   at System.Lazy`1.LazyInitValue()&#x000D;&#x000A;   at System.Lazy`1.get_Value()&#x000D;&#x000A;   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(这很痛苦)。

有关如何进行的任何建议?它与装配误差真的有关吗?

1 个答案:

答案 0 :(得分:1)

您必须将Microsoft.VisualStudio.Text.UI.Wpf.dll从版本12.0更改为11.0。

为了与Visual Studio 2012向下兼容,您必须使用11.0程序集。

你可以通过NuGet获得它们:

PM> Install-Package VSSDK.Text.11