Google protobuf 3: устарел поле, но не может удалить зависимости? - PullRequest
2 голосов
/ 18 февраля 2020

У меня есть proto A, который зависит от proto B. Тогда я осудил поле protoB:

import "protoB.proto";

message ProtoA {
  string assignmentStatus = 1;
  protoB proto_b = 2 [deprecated = true];
}

Я думаю, что в этом случае я смогу удалить оператор import, верно? Но когда я это сделал, компилятор жалуется на то, что зависимость не импортируется.

В чем здесь дело?

1 Ответ

2 голосов
/ 18 февраля 2020

Пометка чего-либо как устаревшего просто ... помечает это как устаревшее; например, в C# член proto_b будет объявлен, но помечен как [Obsolete]. Поскольку он все еще существует, он должен знать, как его описать. Данные все еще доступны в вашем приложении, например.

Если вы хотите удалить это: удалить это:

message ProtoA {
  string assignmentStatus = 1;
  // field 2 *was* protoB proto_b = 2, now removed
}

( оставление комментария важно, чтобы избежать случайного повторного использования человеком номера поля, что может вызвать проблемы с уже существующими данными).

...