【问题标题】:Compiling VS 2012 extension from VS 2013/2015从 VS 2013/2015 编译 VS 2012 扩展
【发布时间】:2015-08-03 19:40:30
【问题描述】:

我在 VS 2012 发布时编写了这个扩展。当时我在 VS 2012 上编译了扩展,并且只针对 VS 2012。

然后,当 VS 2013 出来时,我重新编译了扩展,因此它也可以安装在 VS 2013 上。扩展代码本身可以在 VS 2012/2013/2015 上运行而无需更改。所以,为了允许在 VS 2013 上安装,我只更新了.vsixmanifest,将所需的 VS 版本从:

<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="11.0" />

<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[11.0,12.0]" />

而且它似乎工作正常。

但是,当我后来摆脱了 VS 2012 安装并想在 VS 2013 上编译扩展时,我遇到了以下参考的问题:

<Reference Include="Microsoft.VisualStudio.CoreUtility, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.VisualStudio.Editor, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.VisualStudio.Text.Data, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.VisualStudio.Text.UI, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.VisualStudio.Text.UI.Wpf, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

找不到这些程序集的版本 11。我将项目文件编辑为:

<Reference Include="Microsoft.VisualStudio.CoreUtility" />
<Reference Include="Microsoft.VisualStudio.Editor" />
<Reference Include="Microsoft.VisualStudio.Text.Data" />
<Reference Include="Microsoft.VisualStudio.Text.UI" />
<Reference Include="Microsoft.VisualStudio.Text.UI.Wpf" />

然后它在 VS 2013 上编译并运行良好,但显然扩展需要这些程序集的更高版本,仅在 VS 2013 上可用。因此,扩展不能再安装在 VS 2012 上。我现在有一个VS 2015 的类似问题。

我想我会安装 VS 2012 SDK,这将为我提供这些程序集的第 11 版,以便针对它们进行编译,但是如果不先安装 VS 2012,则无法安装此 SDK。

有什么方法可以从 VS 2015 编译此扩展,同时允许将扩展安装在 VS 上一直回到 2012 版本?

【问题讨论】:

    标签: .net visual-studio-2012 visual-studio-2015 visual-studio-extensions visual-studio-sdk


    【解决方案1】:

    有人在 NuGet 上上传了所需的 SDK 程序集。从这里开始搜索:https://www.nuget.org/packages?q=VSSDK.Shell

    【讨论】:

    • 这对我帮助很大,谢谢!为了节省时间,在 VS 中安装 NuGet 包管理器扩展后,您可以右键单击“引用”、“管理 NuGet 包...”,单击“浏览”按钮,然后搜索 VSSDK.* 包。一旦你选择了你需要的一个,它就会下载并更新你的 csproj 参考。它还会生成一个 packages.config 文件,该文件显然会重新生成,但通常会提交给源代码管理。
    【解决方案2】:

    我注意到每个版本的 Visual Studio 都有不同版本的扩展。

    如果 VS 特定于它与之交谈的程序集的版本,我建议简短的回答是否定的,您不能拥有一个具有一组依赖项的单个项目并创建适用于所有 Visual Studio 版本的扩展。

    可能只需创建所需程序集的正确版本的副本,并且仍然能够为最新版本的 Visual Studio 的早期版本编译扩展。但是你需要有程序集。

    这就是为什么我更喜欢将第三方程序集检查到源代码管理中,并保留使用的每个版本的程序集。您可以使用每个扩展版本的标签和/或分支来管理它。

    【讨论】:

      猜你喜欢
      • 2014-04-27
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 2014-05-03
      • 1970-01-01
      相关资源
      最近更新 更多