Ситуация
У меня есть проект .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, или есть способ, которым я могу не добавить его в проект вообще?
Я бы не хотел обескураживаться по отношению к этим сообщениям и пропустить какую-либо ошибку ссылки во время выполнения в будущем.