Limit VS Code for Go для загрузки пакетов только для v 1.11 - PullRequest
0 голосов
/ 06 мая 2019

Я использую Visual Studio Code версии 1.33.1 в качестве IDE для наших приложений Go.Мы хотели бы использовать Go версии 1.11 для наших приложений.Однако похоже, что одна или несколько зависимостей, которые мы используем, загрузили пакет для Go 1.12.Теперь VS Code не может собрать приложение со следующей ошибкой:

go build golang.org/x/sys/unix: модуль требует Go 1.12 go build github.com/pelletier/go-toml: модуль требует Go 1.12 go [1,1]

Я попытался переустановить Go 1.11, удалил нарушающие пакеты и дал переустановить.Независимо от того, когда я пытался собрать VS Code, скачивание версии 1.12 не удается собрать.Я бы хотел, чтобы VS Code не загружал версии пакетов 1.12 и ограничивал их только 1.11.

1 Ответ

1 голос
/ 06 мая 2019

Go 1.12 Примечания к выпуску (февраль 2019 г.)

Модули

Директива go в файле go.mod теперь указывает версию язык, используемый файлами в этом модуле. Будет установлено значение текущая версия (перейти к 1.12), если нет существующей версии. Если идти директива для модуля указывает версию, более новую, чем набор инструментов в используйте команду go, чтобы попытаться собрать пакеты независимо, и заметит несоответствие, только если эта сборка не удалась.

Это измененное использование директивы go означает, что если вы используете Go 1.12 для построить модуль, записав таким образом go 1.12 в файл go.mod, вы будете выдается ошибка при попытке собрать тот же модуль с Go 1.11 через Go 1.11.3. Go 1.11.4 или новее будет работать нормально, как и релизы старше Го 1.11. Если вы должны использовать Go с 1.11 по 1.11.3, вы можете чтобы избежать проблемы, установите для языковой версии 1.11, используя Go 1.12 go tool, с помощью go 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, чтобы установить ожидаемую языковую версию.


UPDATE:


Комментарий: я пытался использовать предложенную команду: go mod edit -go = 1.11 I получил ошибку: флаг предоставлен, но не определен: -го я отредактировал вручную добавить go 1.11 прямо под моим объявлением модуля во всех файлах go.mod, это не работал. - 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 все будет работать без сбоев только с предварительной поддержкой?

...