依赖项目之间不依赖的依赖关系,导致System.IO.FileNotFoundException

时间:2017-09-13 19:49:58

标签: c# .net visual-studio nunit visual-studio-mac

让我们说我的解决方案有两个项目:

  • 第一个名为" MainProject" (.NETStandard 2.0项目)。
  • 第二个叫做#34; MainProjectTests" (一个NUnit测试项目),每个类的一些单元测试进入" MainProject"。

第一个项目(MainProject)有一个名为" dependencyX"的NuGet依赖项。显然,该项目" MainProjectTests"引用了#34; MainProject"。

因此,当测试运行器运行" MainProjectTests"调用来自" MainProject"的方法。使用" dependencyX"我收到System.IO.FileNotFoundException例外:

  

System.IO.FileNotFoundException:无法加载文件或程序集   ' dependencyX,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或者一个   它的依赖关系。

为什么我会收到此异常?当我添加" dependencyX"到" MainProjectTests"一切正常,但在我看来不是一个好习惯......如何解决?

我正在使用Visual Studio for Mac Community 7.2预览版(7.2 build 583)

感谢您的帮助。

修改

尝试选择:

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
在NUnit项目中

,但获得相同的结果。

2 个答案:

答案 0 :(得分:5)

这似乎是一个关于.NET标准库的已知错误(也许尤其是与NUnit结合使用)。我已经提交了bug report here,似乎证实这不是预期的行为。过去半年没有取得进展。

在确认只有在使用NUnit时才会在NUnit回购中提交错误。

当你正在做的时候,你需要引用.NET标准项目中使用的所有库以及引用.net标准的所有项目。

答案 1 :(得分:1)

这是一个向微软报告过几次的错误,似乎他们对此没有做太多,看看这个Visual Studio does not copy referenced assemblies through the reference hierarchy

另一方面,至少使用Nuget Packages,您可以使用解决方案的包管理器以一种简单的方式(将相同的包添加到同一解决方案中的多个项目),如您在此处Nuget Package Manager所示。

solution manager

enter image description here

相关问题