为什么有时我需要将nuget包添加到正在运行的实际项目中

时间:2018-12-31 11:36:16

标签: c# nuget

我有一个包含大量项目的解决方案,其中一些是.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。

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

编译器仅检查代码中使用的类型(例如类,结构和枚举)的存在性。如果您不调用它,编译器将不会抱怨。

但是,那些依赖项可能需要其他程序集才能运行(它们是使用这些程序集作为参考进行编译的)。这些二级依赖关系通常不会被编译器捕获(当暴露该依赖关系的类型时,它们将捕获)。