1

我有一个较旧的扩展,我想在 VS 2017 中工作。为了能够做到这一点,我知道我将不得不使用新的 VSIX Manifest v3。该扩展在 2015 Update 3 中运行良好。为了更新它,我做了以下工作:

  1. 在 VS2017 中打开扩展源。提示我进行一次性升级,已成功完成
  2. 使用 NuGet 将 Microsot VSSDK BuildTools 从 14.x 更新到 15.x
  3. 将 Prerequisite 块添加到包含 Microsoft.VisualStudio.Component.CoreEditor 的 source.extension.vsixmanifest 文件
  4. 更新安装目标以支持新的 Visual Studio,就像这样

    <InstallationTarget Version="[15.0,16.0)" Id="Microsoft.VisualStudio.Enterprise" />

构建成功,但是一旦我在调试文件夹中打开 vsix 文件,就会收到一条消息告诉我

The file is not a valid VSIX package

如果我使用 WinRAR 打开文件,我可以看到这两个强制文件catalog.json,并且manifest.json不存在,因为它们应该是新的 v3 格式。

我在这里想念什么?

4

2 回答 2

2

事实证明,我的问题是,在 vbproj 文件(或大多数其他文件的 csproj)中,顶部有一个导入,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="..\..\packages\Microsoft.VSSDK.BuildTools.15.1.192\build\Microsoft.VSSDK.BuildTools.props" Condition="Exists('..\..\packages\Microsoft.VSSDK.BuildTools.15.1.192\build\Microsoft.VSSDK.BuildTools.props')" />
    <Import Project="..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.props" Condition="Exists('..\packages\Microsoft.VSSDK.BuildTools.14.3.25407\build\Microsoft.VSSDK.BuildTools.props')" />
    ....

如您所见,此项目文件包含新版本和旧版本的 BuildTools 的导入。我不确定为什么会发生这种情况,因为我所做的只是通过 NuGet 更新 VSSDK BuildTools。我还尝试完全卸载 BuildTools 滴答作响Force uninstall,但它似乎一直存在于我尝试的所有内容中。

因此,如果您遇到类似的问题,请查看您的 vbproj/csproj 文件,如果它具有旧版本 Microsoft.VSSDK.BuildTools 的导入

于 2017-08-24T05:55:38.730 回答
1

您还必须升级 BuildTools 包,您收到的错误表明这没有发生:https ://docs.microsoft.com/en-us/visualstudio/extensibility/how-to-migrate-extensibility-projects-to-visual -工作室-2017

于 2017-08-23T12:08:57.837 回答