限制VS Code for Go仅下载v 1.11版的软件包

时间:2019-05-06 04:11:36

标签: go visual-studio-code vscode-settings

我将Visual Studio Code版本1.33.1用作我们Go应用程序的IDE。我们想将Go版本1.11用于我们的应用程序。但是,似乎我们正在使用的一个或多个依赖项已为Go 1.12下载了一个程序包。现在,VS Code无法构建应用程序,并出现以下错误:

  

开始构建golang.org/x/sys/unix:模块需要执行1.12 go build   github.com/pelletier/go-toml:模块需要Go 1.12   去[1,1]

我尝试重新安装Go 1.11,删除了有问题的软件包,然后重新安装。无论何时我尝试构建VS Code都无法下载1.12版本。 我希望VS Code不要下载软件包的1.12版本并将其限制为仅1.11。

1 个答案:

答案 0 :(得分:1)

  

Go 1.12 Release Notes (February 2019)

     

Modules

     

go.mod文件中的go指令现在指示   该模块中文件使用的语言。它将被设置为   当前版本(转到1.12)(如果不存在现有版本)。如果去   模块的指令指定的版本比其中的工具链更新   使用时,go命令将尝试构建软件包,无论如何,并且   只有在构建失败的情况下,才会注意到不匹配。

     

go指令的这种更改用法意味着如果您使用Go 1.12来   构建一个模块,从而将go 1.12记录在go.mod文件中,您将   尝试使用Go 1.11构建同一模块时收到错误   通过Go 1.11.3。 Go 1.11.4或更高版本以及发行版都可以正常工作   比Go 1.11更早。如果必须使用Go 1.11至1.11.3,则可以   通过将语言版本设置为1.11来避免此问题   转到1.12转到工具,通过转到mod edit -go = 1.11。


$ go help go.mod

The go.mod file itself is line-oriented, with // comments but
no /* */ comments. Each line holds a single directive, made up of a
verb followed by arguments. For example:

  module my/thing
  go 1.12
  require other/thing v1.0.2
  require new/thing/v2 v2.3.4
  exclude old/thing v1.2.3
  replace bad/thing v1.4.5 => good/thing v1.4.5

The verbs are
  module, to define the module path;
  go, to set the expected language version;
  require, to require a particular module at a given version or later;
  exclude, to exclude a particular module version from use; and
  replace, to replace a module version with a different module version.

Go1.12中首次引入了可能的问题解决方案:go.mod动词go,以设置所需的语言版本。


更新:


  

评论:我尝试使用建议的命令:go mod edit -go = 1.11   收到错误消息:提供了标记但未定义:-go我手动编辑为   在所有go.mod文件的模块声明下添加go 1.11,它   不工作。 –   user2995358

您的结果值得期待。正如我之前解释和文档所述,go.mod动词go最初是在Go1.12中引入的。

例如,预期结果,

$ go version
go version go1.11.10 linux/amd64
$ go mod edit -go=1.11
flag provided but not defined: -go
usage: go mod edit [editing flags] [go.mod]
Run 'go help mod edit' for details.
$ 

$ go version
go version go1.12.5 linux/amd64
$ go mod edit -go=1.11
$ 

阅读文档:

$ go version
go version go1.11.10 linux/amd64
$ go1.11 help modules

Preliminary module support

Go 1.11 includes preliminary support for Go modules,
including a new module-aware 'go get' command.
We intend to keep revising this support, while preserving compatibility,
until it can be declared official (no longer preliminary),
and then at a later point we may remove support for work
in GOPATH and the old 'go get' command.
$ 


$ go version
go version devel +004fb5cb8d Fri May 3 03:49:11 2019 +0000 linux/amd64
$ go help modules

Module support

Go 1.13 includes official support for Go modules,
including a module-aware 'go get' command.
Module-aware mode is active by default.
$

Go 1.11仅包含对Go模块的初步支持。 Go 1.13包括对Go模块的全面官方支持。

为什么您只需要初步的支持就可以在Go1.11中正常工作?