Search code examples
c#.netvisual-studionunitvisual-studio-mac

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


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.


Solution

  • 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.