我有一个解决方案,其中包含引用其他几个项目的Web API项目。那里有另一个项目,其中包含一堆Azure函数,还有一些针对旧的不推荐使用的工作人员角色的项目。
绑定重定向,而Nuget一直是我生存的祸根。我遇到了很多依赖关系错误,具体取决于在哪个平台上运行我的程序:
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
经过一些研究,我的最佳猜测是Web API使用其自己的绑定重定向规则加载第一组DLL,并且如果另一个项目需要由不同的绑定重定向指定的其他DLL,则找不到它,并且失败。
我发现我可以通过合并所有nuget程序包并使所有绑定重定向与Web API的绑定重定向匹配来修复我的项目...但是,现在看来一切正常,但VSTS测试除外,该测试继续生成FileNotFoundExceptions DLL。
因此,我不只是要求SO为我修复项目(因为它太大了,所以很困难),我对诸如此类的大型项目的经验法则更感兴趣我的依赖项有很多问题?例如,所有绑定重定向是否应该相同,或者如果它们不同就可以吗?我应该以其他方式组织依存关系吗?你会怎么做才能解开这个?
答案 0 :(得分:0)
也许有助于:
确保依赖项的依赖项使用相同的软件包版本(这可能会导致错误发生,即Project A使用Project B,Project B使用Package v4.0,而Project A使用Package v4.1
请确保在“ Project A / Project B”示例中,如果Project A直接使用dll,那么Project B也会使用dll,或者对两者都使用nuget包。
根据我的经验,这可能会非常耗时,祝您好运!
PS:程序包管理器控制台的此命令也可以提供帮助:
Update-Package -ProjectName YourProject -reinstall