Dependencies not flowing between dependent projects, causing System.IO.FileNotFoundException

半城伤御伤魂 提交于 2020-01-13 07:39:29

问题


Let's say my solution has 2 projects:

  • The first called "MainProject" (A .NETStandard 2.0 project).
  • The second called "MainProjectTests" (A NUnit test project) with some unit tests for each class into "MainProject".

The first project (MainProject) has a NuGet dependency called "dependencyX". Obviously, the project "MainProjectTests" has a reference to "MainProject".

So when the test runner runs a test of "MainProjectTests" that calls methods from "MainProject" using "dependencyX" I'm getting a System.IO.FileNotFoundException exception:

System.IO.FileNotFoundException : Could not load file or assembly 'dependencyX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies.

Why am I getting this exception? When I add "dependencyX" to "MainProjectTests" all works fine, but it seems to me not a good practice... How to solve it?

I'm using Visual Studio for Mac Community 7.2 preview (7.2 build 583)

Thanks for the help.

EDIT:

Tried putting the options:

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

in the NUnit project, but getting the same result.


回答1:


This seems to be a known bug regarding .NET Standard libraries (and maybe especially in conjunction with NUnit). I already filed a bug report here which seems to confirm that this is not the intended behaviour. Altough there has been no progress for over half a year.

Maybe one should file a bug in the NUnit repo after confirming this only happens when using NUnit.

For the time beeing you'll need to reference all libraries used in a .NET Standard project also in all projects referencing the .net standard one as you are doing right now.




回答2:


It is a bug reported to Microsoft few times and it seems they did not do much on this, look at this Visual Studio does not copy referenced assemblies through the reference hierarchy

On the other hand at least with Nuget Packages you have a simple way (to add the same package to multiple projects in the same solution) using the package manager for the solution, as you can see here Nuget Package Manager.



来源:https://stackoverflow.com/questions/46205758/dependencies-not-flowing-between-dependent-projects-causing-system-io-filenotfo

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!