Невозможно запустить приложение C# с Microsoft Graph 3.2.0 из-за проблем с системой. net .http отсутствует ссылка - PullRequest
0 голосов
/ 10 апреля 2020
system.net.http
  • NuGet: 4.3.4 -> 4.0.30319 -> 4.1.1.3
  • NuGet: 4.3.3 -> 4.0.30319 -> 4.1.1.2
  • NuGet: 4.3.2 -> 4.0.30319 -> 4.1.1.1
  • Framework: 4.6.2> 4.0.30319 -> 4.0.0.0

enter image description here

Теперь, если я изменю настройки своего проекта следующим образом: 4.7.2:

enter image description here

А затем проверим мои system.net.http assembly:

enter image description here

  • Framework: 4.7.2> 4.0.30319 -> 4.2.0.0

Таким образом, приведенное выше исследование подразумевает, что если я хочу system.net.http, мне нужно использовать . NET Framework 4.7.2 . Хорошо пока Но ...

Microsoft Graph 3.2.0 Когда вы смотрите на зависимости для Microsoft Graph 3.2.0, он говорит:

enter image description here

Так что утверждается, что это зависит от . NET Framework 4.6.1 верно?

Поэтому я удаляю и переустанавливаю несколько пакетов NuGet, чтобы они верны для 4.7.2 и затем я изменяю свою запись app.config:

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
  </dependentAssembly>

Теперь она компилируется. Тем не менее, когда я запускаю программное обеспечение, я все еще, кроме этого исключения (встречается везде в inte rnet!):

{"Не удалось загрузить файл или сборку" System. Net .Http, Версия = 4.2.0.0, Культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'или одна из ее зависимостей. Система не может найти указанный файл. ":" Система. Net .Http, Версия = 4.2.0.0, Культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a "}

Я считаю, что этот файл находится здесь:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ Microsoft . NET .Build.Extensions \ net471 \ lib

Это тот, который используется во время компиляции.

Тем не менее, когда я пытаюсь найти путь выполнения к этой DLL, все, что я могу найти, это:

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319

Но файл там датирован 19.03.2009 г. с версией файла 4.8.3752.0. Еще один здесь:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ Microsoft. NET .Build.Extensions \ net471 \ lib

01.04.2020 версии 4.6.26011.1.

Так что я в полном замешательстве. Microsoft Graph 3.2.0 говорит, что это зависит от . NET Framework 4.6.1 , но жалуется на требование system.net.http 4.2.0.0 и несмотря на наличие . NET Framework 4.7.2 установлен У меня есть весь этот беспорядок.

У меня никогда не было проблем с использованием Microsoft Graph в прошлом, и только потому, что я обновил до их последних библиотек через NuGet Manager, мой инструмент полностью не работает.

Я перепробовал все предложения, найденные в SO, о привязке перенаправлений и удалении старых файлов. Я просто не знаю, почему Microsoft Graph говорит, что это зависит от 4.6.1, но исключение говорит, что это необходимо (и я не могу найти 4.2.0.0, который является Framework 4.7.2).

Я любезно ценю любые конкретные c шаги для решения этой проблемы, чтобы мое приложение не только снова компилировалось, но и работало так, как раньше.

1 Ответ

0 голосов
/ 10 апреля 2020

Я наткнулся на этот вопрос и, основываясь на комментариях, сказал, что мой app.config должен быть:

  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0"/>
  </dependentAssembly>

Поскольку пакет Microsoft Graph зависит от. NET Framework 4.6.1 нам нужно использовать 4.0.0.0 system.net.http, иначе мы получим ошибки конфликта.

Sorted.

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