所以我们有一个使用4.6.2
的项目(目标.NET框架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应该是处理依赖关系的好方法,在某种程度上它在这种情况下非常混乱。
任何人都有处理此问题的经验吗?