我有一个中等复杂的应用程序,有一个针对.NET Framework 4.6.1的单元测试项目
如果我在Package Management控制台中运行以下命令:
update-package -reinstall -project velogicfit.Sizer3D.Core.UnitTests
...然后Nuget将一堆绑定重定向添加到单元测试项目的app.config文件中,重定向到System.Runtime之类的v4.1.1.0:
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
</dependentAssembly>
然后,当项目运行时(由NCrunch运行),它失败并显示消息:
System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
我可以通过安装更新的框架版本来修复错误,但我宁愿了解导致Nuget添加这些绑定重定向的原因。
查看单元测试项目输出目录中的每个DLL,我可以看到的最高参考是system.runtime v4.0.20.0
我已经尝试了asmspy并且它还报告了4.0.20.0有一些依赖,但4.1.1.0没有任何内容
FWIW,对system.runtime v4.0.20.0的引用都来自我在解决方案中的其他项目,目标是NETStandard 1.4
问题:
答案 0 :(得分:1)
我最终通过切换到Paket来解决这个问题(和其他一些参考问题)。 Paket帮助我掌握了我的直接和传递依赖关系,然后我能够看到什么取决于什么并适当地设置绑定重定向。