Итак, у нас есть проект (целевой .NET Framework 4.6.2
), который использует System.Diagnostics.Tracing
, что является зависимостью от цепочки других пакетов.
Пользователь 1 установил его через Nuget и поделился кодомдругим.Однако теперь мы находимся в беспорядке, который в итоге приводит к ошибке The located assembly's manifest definition does not match the assembly reference (Exception from HRESULT: 0x80131040
хотя бы для одного из нас.
И, пытаясь это исправить, мы поняли, что ссылка на System.Diagnostics.Tracing
различна для каждогоиз нас.
Пользователь 1: Он указывает на C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\Facades\System.Diagnostics.Tracing.dll
Пользователь 2: Он указывает на C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Tracing.dll
Пользователь 3: Единственный, на кого он фактически указываетустановленный пакет Nuget C:\Users\User3\Documents\Project\Test\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll
И по какой-то причине пользователь 3 не может запустить проект.С пользователем 1 и пользователем 2 все в порядке.
И файл .csproj
имеет это специально.
<Reference Include="System.Diagnostics.Tracing">
<HintPath>..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll</HintPath>
<Private>True</Private>
</Reference>
У нас нет идей, почему это произойдет, и как это исправить.Предполагается, что Nuget - хороший способ справиться с зависимостями, и почему-то он очень грязный в этой ситуации.
Кто-нибудь имеет опыт работы с этим?