#c# #nuget #visual-studio-2019
Вопрос:
Сегодня я обновил свои пакеты Nuget, использующие систему API Microsoft Graph, и теперь я получаю множество предупреждений, связанных с System.Net.Http
.
В моем App.config
у меня есть:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<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>
...
...
Фактические предупреждения, которые я получаю, таковы:
Found conflicts between different versions of "System.Net.Http" that could not be resolved.
There was a conflict between "System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
"System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was chosen because it was primary and "System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was not.
References which depend on "System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Net.Http.dll].
C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Net.Http.dll
Project file item includes which caused reference "C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.2System.Net.Http.dll".
System.Net.Http
References which depend on "System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [].
C:Usersajtru.nugetpackagesazure.core1.17.0libnet461Azure.Core.dll
Project file item includes which caused reference "C:Usersajtru.nugetpackagesazure.core1.17.0libnet461Azure.Core.dll".
C:Usersajtru.nugetpackagesazure.core1.17.0libnet461Azure.Core.dll
C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
Project file item includes which caused reference "C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll".
C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
Project file item includes which caused reference "C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll".
C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
C:Usersajtru.nugetpackagesmicrosoft.identity.client4.35.1libnet461Microsoft.Identity.Client.dll
Project file item includes which caused reference "C:Usersajtru.nugetpackagesmicrosoft.identity.client4.35.1libnet461Microsoft.Identity.Client.dll".
C:Usersajtru.nugetpackagesmicrosoft.identity.client4.35.1libnet461Microsoft.Identity.Client.dll
C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
C:Usersajtru.nugetpackagesmicrosoft.identitymodel.logging6.12.0libnet461Microsoft.IdentityModel.Logging.dll
Project file item includes which caused reference "C:Usersajtru.nugetpackagesmicrosoft.identitymodel.logging6.12.0libnet461Microsoft.IdentityModel.Logging.dll".
C:Usersajtru.nugetpackagesmicrosoft.identitymodel.logging6.12.0libnet461Microsoft.IdentityModel.Logging.dll
C:Usersajtru.nugetpackagesmicrosoft.identitymodel.jsonwebtokens6.12.0libnet461Microsoft.IdentityModel.JsonWebTokens.dll
C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols6.12.0libnet461Microsoft.IdentityModel.Protocols.dll
C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols.openidconnect6.12.0libnet461Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
C:Usersajtru.nugetpackagesmicrosoft.identitymodel.tokens6.12.0libnet461Microsoft.IdentityModel.Tokens.dll
C:Usersajtru.nugetpackagessystem.identitymodel.tokens.jwt6.12.0libnet461System.IdentityModel.Tokens.Jwt.dll
C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols6.12.0libnet461Microsoft.IdentityModel.Protocols.dll
Project file item includes which caused reference "C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols6.12.0libnet461Microsoft.IdentityModel.Protocols.dll".
C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols6.12.0libnet461Microsoft.IdentityModel.Protocols.dll
C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols.openidconnect6.12.0libnet461Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols.openidconnect6.12.0libnet461Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
Project file item includes which caused reference "C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols.openidconnect6.12.0libnet461Microsoft.IdentityModel.Protocols.OpenIdConnect.dll".
C:Usersajtru.nugetpackagesmicrosoft.identitymodel.protocols.openidconnect6.12.0libnet461Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
C:Usersajtru.nugetpackagesmicrosoft.graph.core2.0.2libnet462Microsoft.Graph.Core.dll
C:Usersajtru.nugetpackagesmicrosoft.graph4.2.0libnet462Microsoft.Graph.dll
Я компилирую с последней версией Visual Studio 2019 Community Edition.
Я заметил:
References which depend on "System.Net.Http, Version=4.0.0.0, ... Framework.NETFrameworkv4.6.2System.Net.Http.dll].
Мои свойства приложения предназначены для этой платформы:
Так нужно ли мне переходить на другую используемую платформу 4.2.0.0
?
Я путаюсь, потому что, согласно менеджеру пакетов NuGet, я думаю, что у меня есть фреймворк в порядке.
Обновить
В моем основном решении есть несколько общих проектов. Вышеупомянутый проект C# является одним из них. Существует еще один проект Visual Basic, в котором используется API Google Календаря, для этого проекта в 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>
Я замечаю, что он говорит, чтобы его использовали 4.0.0.0
. Итак, есть ли здесь решение отредактировать проект c# App.config
и изменить newVersion
свойство в соответствии с ним? Чтобы прекратить конфликты?
Ответ №1:
Целевая платформа .NET Framework проекта консольного приложения C# по умолчанию содержит ссылку на System.Net.Http. Если вы не используете эту ссылку, вы можете удалить ее, и это очистит ваше предупреждение.
Комментарии:
1. В моем проекте Google (VB) в списке есть определенная запись Microsoft.Net.Http (версия 2.2.29). Я не хочу нарушать компиляцию, удаляя все, что необходимо системе. Как мы можем это подтвердить?
2. @AndrewTruckle, удалите его и посмотрите, что произойдет. Если он сломается, вы всегда можете добавить его обратно. В худшем случае вы всегда можете восстановить свой проект из системы управления версиями, если нарушите его.
3. ОК. Я попробую позже.
4. Я прокомментировал два раздела
system.http.net
в обоих файлах, и это сработало нормально. Спасибо.