簡體   English   中英

混合和匹配 protoc 和 protoc-gen-go 版本

[英]Mixing and matching protoc and protoc-gen-go versions

go protobuf 生成的代碼報告(省略):

// protoc-gen-go v1.25.0
// protoc.       v3.5.1

import "github.com/golang/protobuf/..."
import "google.golang.org/protobuf/..."

導致go.mod引用兩個 protobuf:

require(
    github.com/golang/protobuf v1.4.3
    google.golang.org/protobuf v1.25.0
)

那是猶太潔食嗎? 我的意思是它似乎有效,但它就像代碼的兩倍。

我相信,這種垃圾的根本原因是系統管理員問題(protobuf 生成器實用程序的安裝不完整且不兼容)以及 Google 不能只停留在一個 URL 的事實。

在生成的代碼中導入github.com/golang/protobuf以允許包含以下內容:

// This is a compile-time assertion that a sufficiently up-to-date version
// of the legacy proto package is being used.
const _ = proto.ProtoPackageIsVersion4

此問題中有更多詳細信息 - 引用 dsnet:

新生成的.pb.go 文件依賴於棄用的原型 package 的唯一原因是對舊版 ZEFE90A8E604A7C840E88D03A67F 的足夠新版本實施弱依賴。 這是必要的,因為不是每個人都在使用 Go 模塊,因此 Go 工具鏈將強制執行此依賴關系約束。 我不喜歡添加它,但我認為至少保留幾個月可能是必要的。

根據對此問題的評論,應在版本1.26 (發布時)中刪除依賴項。

回答后發現了這個重復的問題,但由於我在這個答案中包含的細節比我在前一個中所做的更多,所以我將保留它)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM