Мне действительно нужен весь NuGet-пакет Grp c .Core, чтобы использовать Google PubSub в простом C# приложении? - PullRequest
1 голос
/ 04 августа 2020

Я создаю простое C# настольное приложение, которое извлекает сообщения из Google Cloud PubSub. Я заметил, что PubSub использует пакет Grp c .Core, размер которого при установке превышает 500 мб! Он содержит много файлов, которые мне не нужны (для ma c, android, et c.), И не представляется разумным использовать такой пакет, если размер моего приложения составляет всего несколько мегабайт. Здесь обсуждается: Почему NuGet-пакет Grp c .Core такой большой?

В разделе комментариев говорится, что можно настроить таргетинг на более конкретные c пакеты для костюм специфика c потребности. Итак, мой вопрос: есть ли дополнительные c пакеты, которые можно использовать для простого извлечения сообщений из Cloud PubSub в настольное приложение?

1 Ответ

2 голосов
/ 12 августа 2020

Я чувствую твою боль. (На самом деле, я чувствую это много раз. Когда я делаю полную сборку google-cloud-do tnet repo , над которым я работаю, он втягивает эти библиотеки много раз и заканчивается до огромных размеров.)

Было бы красиво , если бы вы могли добавить своего рода «отрицательную зависимость», чтобы сказать: «Я не хочу Grp c .Core, хотя Google. Cloud.PubSub.V1 зависит от него косвенно, используйте вместо него Grp c. Net .Client ", но я не верю, что есть какой-либо простой способ сделать это в проектах MSBuild.

Мы делаем сделайте «максимальную» попытку поддержать Grp c. Net .Client через пакет Google.Api.Gax.Grp c .GrpcNetClient - вы можете положиться на этот пакет и затем установить свойство GrpcAdapter в ClientBuilderBase<TClient> по GrpcNetClientAdapter.Default. Однако:

  • Библиотеки Pub / Sub немного сложнее перенастроить, чем другие, из-за ручного уровня кода, обертывающего сгенерированный код. (Если вам интересно, я могу узнать, как выполнить эту настройку.)
  • Мы не проводили значительного тестирования с помощью Grp c. Net .Client и, в частности, библиотеки Pub / Sub выполняет много потоковой передачи; в то время как это должно все просто работать, возможно, возникнут проблемы.
  • Это на самом деле не удаляет зависимость Grp c .Core в любом случае - так что вам нужно вручную удалите файлы, которые вам не нужны.

На самом деле не более конкретный c пакет, на который вы можете настроить таргетинг - все, что я могу предложить, это удалить файлы, которые вам не нужны. Вы можете сделать это, например, в цели сборки, которая запускает посткомпиляцию. Возможно возможно , что есть какой-то хитрый способ сообщить MSBuild, что, когда он будет скопировать (скажем) библиотеки iOS в определенное место c, просто исключите их вместо этого - но я не знаю достаточно MSBuild, чтобы сказать, как вы это сделаете (когда они копируются из-за зависимости, а не из-за самого проекта).

...