Почему netfx.force.conflicts.dll добавлен в мой проект, и как я могу заставить его использовать мою версию .dll? - PullRequest
0 голосов
/ 14 апреля 2020

Ситуация

У меня есть проект .net framework 4.7.1, который ссылается на пакеты nuget, нацеленные на .net srd 2.0. При сборке локального и на CI-сервере я получаю предупреждения о найденных конфликтующих версиях, и я вычеркнул его, используя вывод diagnostic build.

При создании проекта задача NETBuildExtensionsError пропускается (ура!). Я предполагаю, что это пропущено, потому что я правильно использую пакеты .net srd.

Task "NETBuildExtensionsError" skipped, due to false condition;

Однако сразу после этого сообщения я вижу, что добавлена ​​сборка netfx.force.conflicts. Другие сборки, с которыми я конфликтую, также добавлены, но, похоже, конфликты происходят из этого файла. Сборки выглядят добавленными из следующего каталога (добавлен один раз для краткости)

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net471\lib
Added Item(s): 
1>    _NETStandardLibraryNETFrameworkLib=
1>        C:\...\netfx.force.conflicts.dll
1>        C:\...\System.Data.Common.dll
1>        C:\...\System.Diagnostics.StackTrace.dll
1>        C:\...\System.Diagnostics.Tracing.dll
1>        C:\...\System.Globalization.Extensions.dll
1>        C:\...\System.IO.Compression.dll
1>        C:\...\System.Net.Http.dll
1>        C:\...\System.Net.Sockets.dll
1>        C:\...\System.Runtime.Serialization.Primitives.dll
1>        C:\...\System.Security.Cryptography.Algorithms.dll
1>        C:\...\System.Security.SecureString.dll
1>        C:\...\System.Threading.Overlapped.dll
1>        C:\...\System.Xml.XPath.XDocument.dll

Мое (сокращенное) сообщение о конфликте гласит:

There was a conflict between "System.Data.Common, Version=4.2.0.0 ... and "System.Data.Common, Version=4.1.2.0 ... (TaskId:13)
1>      "System.Data.Common, Version=4.2.0.0 ... was chosen because it was primary ... (TaskId:13)
1>      References which depend on "System.Data.Common, Version=4.2.0.0 ... [C:\Program Files (x86)\MICROSOFT VISUAL STUDIO\2019\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net471\lib\System.Data.Common.dll]. (TaskId:13)
1>          C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net471\lib\System.Data.Common.dll (TaskId:13)
1>my ref>>    Project file item includes which caused reference "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net471\lib\System.Data.Common.dll". (TaskId:13)
1>              System.Data.Common (TaskId:13)
1>      References which depend on "System.Data.Common, Version=4.1.2.0 ... [C:\Program Files (x86)\REFERENCE ASSEMBLIES\Microsoft\Framework\.NETFramework\v4.7.1\Facades\System.Data.Common.dll]. (TaskId:13)
1>          C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net471\lib\netfx.force.conflicts.dll (TaskId:13)
1>bad ref>>   Project file item includes which caused reference "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net471\lib\netfx.force.conflicts.dll". (TaskId:13)
1>              netfx.force.conflicts (TaskId:13)

Я понимаю, что, но не почему или как.

Проще говоря, этот вывод говорит мне:

  • netfx.force.conflicts.dll был добавлен в мой проект MSBuild
  • netfx.force.conflicts.dll is ссылаясь на более старые версии некоторых .dlls, чем то, на что я ссылаюсь
  • netfx.force.conflicts.dll ищет (и находит) файлы в другом месте, чем моя ссылка
    • REFERENCE ASSEMBLIES/.../.NETFramework/v4.7.1/Facades вместо MICROSOFT VISUAL STUDIO/.../net471/lib
  • Мои ссылки на .dlls с конфликтами были выбраны потому, что они были первичными (да!), Но я все еще получаю предупреждения (особенно на моем сервере сборки)

В заключение: я спрашиваю

Есть ли способ получить netfx.force.conflicts.dll, чтобы использовать более новые версии dll, или есть способ, которым я могу не добавить его в проект вообще?

Я бы не хотел обескураживаться по отношению к этим сообщениям и пропустить какую-либо ошибку ссылки во время выполнения в будущем.

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