我有一个依赖于 proto B 的 proto A。然后我弃用了 protoB 字段:
import "protoB.proto";
message ProtoA {
string assignmentStatus = 1;
protoB proto_b = 2 [deprecated = true];
}
我认为在这种情况下我应该能够删除
import
语句,对吗?但是当我这样做时,编译器抱怨依赖项没有被导入。
这里有什么交易?
将某些东西标记为已弃用只是...将其标记为已弃用;例如,在 C# 中,将声明
proto_b
成员,但将其标记为 [Obsolete]
。既然它仍然存在,它需要知道如何描述它。例如,数据仍然可以在您的应用程序中访问。
如果您想删除它:删除它:
message ProtoA {
string assignmentStatus = 1;
// field 2 *was* protoB proto_b = 2, now removed
}
(留下评论很重要,可以避免人们意外地重复使用字段编号,这可能会导致预先存在的数据出现问题)。
您应该根据文档保留字段。 这样以后就不会有人使用它们了。
message ProtoA {
string assignmentStatus = 1;
// field proto_b = 2, was removed due to bla bla
reserved 2;
}