为什么要在这里寻找 VsixUtil.exe?

Why is something looking for VsixUtil.exe here?

我有一个解决方案,它是一个 VS 扩展,可以编译成 VSIX。我删除了我的包文件夹,构建了解决方案,但出现错误... The specified task executable location "D:\git\QueryFirst\packages\Microsoft.VSSDK.BuildTools.15.0.26201\tools\VSSDK\bin\VsixUtil.exe" is invalid.

文件夹存在,果然VsixUtil.exe不在里面。我用 nuget 安装了 VsixUtil,但它没有转到那个位置。为什么我的解决方案在那个位置寻找 VsixUtil。我可以将它指向其他地方吗?或者安装在那里?

我使用的是 VS 2017 企业版。

VsixUtil.exe 实用程序不应单独 downloaded/installed。您用来下载的 NuGet 包不是来自 Microsoft 或 VisualStudioExtensibility 的 "official"。

显然您的项目中两个 VSSDK 之间的版本不匹配:

  • 该项目正在使用最近的 Microsoft.VsSDK.targets 文件,该文件使用 VsixUtil 任务:
  <UsingTask TaskName="VsixUtil" AssemblyFile="$(VsSDKAssemblyFile)" />
  • 但它将转到旧 VSSDK (Microsoft.VSSDK.BuildTools.15.0.26201) 的文件夹,该文件夹没有该任务所需的 VsixUtil.exe 文件。

升级项目的 Microsoft.VSSDK.BuildTools NuGet 包以使用最新版本 15.8.x(15.8.3252 或 15.8.3247)确实包含 VsixUtil.exe 在文件夹 tools\vssdk\bin。