Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 从VS 2013/2015编译VS 2012扩展_.net_Visual Studio 2012_Visual Studio 2015_Visual Studio Extensions_Visual Studio Sdk - Fatal编程技术网

.net 从VS 2013/2015编译VS 2012扩展

.net 从VS 2013/2015编译VS 2012扩展,.net,visual-studio-2012,visual-studio-2015,visual-studio-extensions,visual-studio-sdk,.net,Visual Studio 2012,Visual Studio 2015,Visual Studio Extensions,Visual Studio Sdk,我在VS2012发布时写了这个扩展。当时我在VS 2012上编译了扩展,只针对VS 2012 当VS2013发布时,我重新编译了扩展,这样它也可以安装在VS2013上。扩展代码本身适用于VS 2012/2013/2015,无需更改。因此,为了允许在VS 2013上进行安装,我只更新了.vsixmanifest,将所需的VS版本从: <InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="11.0" /> 到

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

当VS2013发布时,我重新编译了扩展,这样它也可以安装在VS2013上。扩展代码本身适用于VS 2012/2013/2015,无需更改。因此,为了允许在VS 2013上进行安装,我只更新了
.vsixmanifest
,将所需的VS版本从:

<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="11.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" />

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

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


有没有办法从VS 2015编译此扩展,同时允许将扩展安装在VS上,直到版本2012?

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

如果VS对它所涉及的程序集的版本有明确规定,我建议简短的回答是否定的,那么您不能拥有一个具有一组依赖项的单个项目,也不能创建适用于所有版本的Visual Studio的扩展

可能只需要创建所需程序集的正确版本的副本,就可以在最新版本中为早期版本的Visual Studio编译扩展。但是你需要有装配


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

有人在NuGet上上传了所需的SDK程序集。从这里开始搜索:

这对我帮助很大,谢谢!为了节省时间,在VS中安装NuGet Package Manager扩展后,您可以右键单击引用,管理NuGet Packages…,单击浏览按钮,然后搜索VSSDK.*包。一旦您选择了一个您需要的,它将下载并更新您的csproj参考资料。它还将生成一个packages.config文件,该文件显然会重新生成,但通常会提交给源代码管理。
<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" />