我有一个包含大量项目的解决方案,其中一些是.Net Framework 4.7.2,其中一些是.Net Standard 2.0。
我们当然会使用大量的Nuget软件包,并且通常一切正常。
有时候,我会在项目中添加一个Nuget包,该解决方案会很好地构建。但是,当我运行测试或实际应用程序时,出现运行时System.IO.FileNotFound异常,表明它找不到nuget包的dll。
当我还将nuget包添加到测试项目或包含应用程序的项目时,一切正常。
例如,刚才我正在将项目从.Net Framework转换为.Net Standard,因此我删除了Irony.Interpreter并将其替换为Irony.Interpreter.NetCore。
但是我所有的测试突然开始失败,声称找不到nuget软件包。当我将Irony.Interpreter.NetCore添加到测试项目时,测试全部通过。请注意,测试项目是.Net Framework,并且以前从未引用过Irony.Interpreter。
有人知道为什么会这样吗?
答案 0 :(得分:1)
编译器仅检查代码中使用的类型(例如类,结构和枚举)的存在性。如果您不调用它,编译器将不会抱怨。
但是,那些依赖项可能需要其他程序集才能运行(它们是使用这些程序集作为参考进行编译的)。这些二级依赖关系通常不会被编译器捕获(当暴露该依赖关系的类型时,它们将捕获)。