【发布时间】:2017-09-13 19:49:57
【问题描述】:
假设我的解决方案有 2 个项目:
- 第一个名为“MainProject”(一个 .NETStandard 2.0 项目)。
- 第二个称为“MainProjectTests”(一个 NUnit 测试项目),将每个类的一些单元测试放到“MainProject”中。
第一个项目 (MainProject) 有一个名为“dependencyX”的 NuGet 依赖项。显然,“MainProjectTests”项目有对“MainProject”的引用。
因此,当测试运行程序运行“MainProjectTests”测试,该测试使用“dependencyX”从“MainProject”调用方法时,我得到了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 项目中,但得到相同的结果。
【问题讨论】:
-
为什么在使用它们的地方提供依赖项似乎不是一个好习惯?运行时应该从哪里获取它们?
-
@CodeCaster 感谢您的评论。我的测试项目没有直接使用
dependencyX。相反,它从使用dependencyX的项目中的类调用方法。我错了?所以我相信测试项目应该不知道dependencyX的存在... -
MainProject 是否设置为将dependencyX 二进制文件放在构建输出目录中?如果不是,您为什么希望它可以运行?
-
复制测试箱中的 dll 是可行的,但这是一个奇怪的解决方法。
标签: c# .net visual-studio nunit visual-studio-mac