什么会导致 vsix 安装中的 "Value cannot be null, Uristring"?

What would cause "Value cannot be null, Uristring" in a vsix installation?

在最新版本 Visual Studio 中,即 16.6.2051,无法再安装我的 visual studio 软件包。

我收到错误

Value cannot be null.
Parameter name: uriString

安装在 visual studio 的早期版本中有效(可能在最新版本中)。我确定 Visual Studio.

中发生了一些变化

但是,这并不意味着我的安装没有错误。

这是日志文件的最后一部分(我认为最有趣的部分)

30-Jun-20 20:19:33 - BEGIN: Downloading extension: 
30-Jun-20 20:19:33 - END: Downloading extension: 
30-Jun-20 20:19:33 - Value cannot be null.
Parameter name: uriString
30-Jun-20 20:19:33 -    at System.Uri..ctor(String uriString)
   at VSIXInstaller.ExtensionPackService.DownloadExtension(IFileSystem fileSystem, BaseOnlineExtension extensionToDownload, CancellationToken cancellationToken)
   at VSIXInstaller.ExtensionPackService.GetExtensionByVsixId(List`1 vsixIds, String extensionPackParentName, IExtensionEngine extensionEngine, List`1 extensionsToInstall, CancellationToken cancellationToken)
30-Jun-20 20:19:33 - END: Gathering extension pack information
30-Jun-20 20:19:33 - END: Processing extension pack
30-Jun-20 20:19:33 - System.ArgumentNullException: Value cannot be null.
Parameter name: uriString
   at System.Uri..ctor(String uriString)
   at VSIXInstaller.ExtensionPackService.DownloadExtension(IFileSystem fileSystem, BaseOnlineExtension extensionToDownload, CancellationToken cancellationToken)
   at VSIXInstaller.ExtensionPackService.GetExtensionByVsixId(List`1 vsixIds, String extensionPackParentName, IExtensionEngine extensionEngine, List`1 extensionsToInstall, CancellationToken cancellationToken)
   at VSIXInstaller.ExtensionPackService.AcquireExtensionPack(IList`1 extensionsPath, IStateData stateData, Boolean isRepairSupported)
   at VSIXInstaller.ExtensionPackService.ExpandExtensionPackToInstall(IStateData stateData, Boolean isRepairSupported)
   at VSIXInstaller.App.Initialize(Boolean isRepairSupported)
   at VSIXInstaller.App.Initialize()
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.VisualStudio.Telemetry.WindowsErrorReporting.WatsonReport.GetClrWatsonExceptionInfo(Exception exceptionObject)

我已将完整日志包含在 error report to Microsoft

有人知道错误可能指的是什么 uriString 吗?我该如何解决它?

原来我的项目包含一个不需要的文件Extensions.vsext,内容如下:

{
  "description": "Read about creating extension packs at https://aka.ms/vsextpack",
  "version": "1.0.0.0",
  "extensions": [
    {
      "vsixId": "41858b2d-ff0b-4a43-80b0-f1b2d6084935",
      "name": "AlignAssignments"
    },
    {
      "vsixId": "42374550-426a-400e-96f9-237682e8dea6",
      "name": "CopyAsHtml"
    }
  ]
}

这肯定是我创建原始包时根据项目模板创建的。

很可能是我在创建项目时选择了错误的项目类型。这个文件只需要创建一个所谓的扩展包。

我已经从项目中删除了这个文件,它已经解决了问题。