Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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
Visual studio 如何在VS中调试VSIX扩展,VS是使用的VSSDK的其他版本_Visual Studio_Visual Studio Extensions_Vsix_Vsx_Visual Studio Sdk - Fatal编程技术网

Visual studio 如何在VS中调试VSIX扩展,VS是使用的VSSDK的其他版本

Visual studio 如何在VS中调试VSIX扩展,VS是使用的VSSDK的其他版本,visual-studio,visual-studio-extensions,vsix,vsx,visual-studio-sdk,Visual Studio,Visual Studio Extensions,Vsix,Vsx,Visual Studio Sdk,我有一个Visual Studio扩展的解决方案。自VS2010以来,此扩展应适用于任何VS版本。这是因为我使用VS2010 SDK。我进行了黑客攻击,将我的项目绑定到VS2010 SDK程序集和目标,以便在未安装SDK的情况下工作—这要归功于。 我可以成功构建扩展的vsix,并将其安装到任何VS.Nice中 但是我还想用F5调试我的扩展。我不想在VS2010中这样做,而是想在我的情况下在其他VS-VS 2015中这样做。我甚至安装了VS 2015 SDK。但它显然不起作用。作为VS2010 S

我有一个Visual Studio扩展的解决方案。自VS2010以来,此扩展应适用于任何VS版本。这是因为我使用VS2010 SDK。我进行了黑客攻击,将我的项目绑定到VS2010 SDK程序集和目标,以便在未安装SDK的情况下工作—这要归功于。 我可以成功构建扩展的vsix,并将其安装到任何VS.Nice中

但是我还想用F5调试我的扩展。我不想在VS2010中这样做,而是想在我的情况下在其他VS-VS 2015中这样做。我甚至安装了VS 2015 SDK。但它显然不起作用。作为VS2010 SDK的目标,应该部署内置在VS2010实验实例中的扩展

所以问题是:
如果VS2015中的vsix扩展本身使用VS2010 SDK,如何设置项目以使用F5调试该扩展


可能我需要使用VS2015 SDK中的一些目标/任务,但哪些目标/任务以及如何使用?

关于如何实现这些目标/任务的逐步描述可以在这里的提交历史记录中找到:(我在我的VS扩展“SQL Server Compact Toolbox”中成功地使用了它)

为了简单起见,我将解决方案放在这里。这是从-see@ErikEj的答案中加了一点补充

通常我们将
Microsoft.VsSDK.targets
文件导入到VS包项目的csproj中。由于我的项目不依赖于全局安装的VS SDK,因此我使用VS2010 SDK从本地文件夹导入:

<Import Project="..\..\SDK\v10.0\MSBuild\VSSDK\Microsoft.VsSDK.targets" />
这使得我们的导入基于变量
VisualStudioVersion
的可用性,该变量仅在VS和
BuildingInsideVisualStudio
中可用<代码>内置VisualStudio在内置VS

如果您需要在不同的VS版本中打开解决方案,那么我们还需要添加
MinimumVisualStudioVersion
变量的自定义

<PropertyGroup>
  <!-- This is added to prevent forced migrations in Visual Studio 2012 and newer -->
  <MinimumVisualStudioVersion Condition="'$(VisualStudioVersion)' != ''">$(VisualStudioVersion)</MinimumVisualStudioVersion>
</PropertyGroup>

非常感谢,这正是我需要的!它似乎不再起作用了——在VS 2017及以后
<PropertyGroup>
  <VsSdkTargets Condition=" '$(VisualStudioVersion)' == '' or '$(BuildingInsideVisualStudio)' != 'false' ">..\..\SDK\v10.0\MSBuild\VSSDK\Microsoft.VsSDK.targets</VsSdkTargets>
  <VsSdkTargets Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\VSSDK\Microsoft.VsSDK.targets</VsSdkTargets>

</PropertyGroup>
<PropertyGroup>
  <!-- This is added to prevent forced migrations in Visual Studio 2012 and newer -->
  <MinimumVisualStudioVersion Condition="'$(VisualStudioVersion)' != ''">$(VisualStudioVersion)</MinimumVisualStudioVersion>
</PropertyGroup>
<PropertyGroup>
  ...
  <StartAction>Program</StartAction>
  <StartProgram>$(DevEnvDir)\devenv.exe</StartProgram>
  <StartArguments>/rootsuffix Exp</StartArguments>
</PropertyGroup>