Kentico Kontent DeliveryClient.Build на портале Kentico не удалось загрузить файл или сборку Microsoft.Extensions.DependencyInjection - PullRequest
2 голосов
/ 12 марта 2020

Я пытаюсь вызвать Kentico Kontent, используя их DeliveryClient в проекте Kentico Portal, в котором нет внедрения зависимости. Этот проект хотел бы перейти на Kontent, но хотел бы, чтобы новая функция в существующем проекте была реализована с Kontent до перехода.

После установки Kontent Delivery SDK вот мой код

var clientTest = DeliveryClientBuilder.WithProjectId("MyProjectId").Build();

Я получаю ошибку во время выполнения

System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.Extensions.DependencyInjection, Version=2.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' or one of its dependencies. The system cannot find the file specified.'

Очевидно, что в этом проекте нет внедрения зависимостей, и я слышал, что его настройка в проекте портала трудна, если не невозможна. Поэтому я решил обновить свой собственный клиент доставки, как описано в блоге Kentico

var test = new DeliveryClient(options);

Но DeliveryClient помечен как внутренний: 'DeliveryClient' is inaccessible due to its protection level

Как сделать Я продолжаю?

Подробности

  • Kentico.Kontent.Delivery 12.3.0
  • Kentico версия 12.0.22
  • . Net Framework 4.6 .1

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

Фактическая проблема была намного тупее. Я установил Konget Delivery Client nuget SDK в другой проект и только ссылался на него в этом. Установка его для этого проекта решила проблему. Теперь я могу без проблем вызвать строителя.

0 голосов
/ 12 марта 2020

Хотя Kentico.Kontent.Delivery 12.* настроен на netstandard2.0, что означает, что он должен быть совместим с. NET Framework 4.6.1 , существует свидетельство , что эта установка может вызвать проблемы. Есть несколько вещей, которые я бы порекомендовал, прежде чем пытаться что-то еще:

  1. Обновление до. NET 4.8 (или хотя бы до 4.7.2)
  2. Включить Автоматизация c Переадресация привязки в вашем проекте путем добавления:
<PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

Независимо от того, как вы создаете / регистрируете DeliveryClient (DeliveryClientBuilder services.AddDeliveryClient()), SDK всегда использует Microsoft.Extensions.DependencyInjection внутри, поэтому обходного пути нет. Вам нужно будет решить проблему привязки сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...