C# 中的引用 - 运行时引用丢失或不匹配的示例有哪些

References in C# - What are examples of missing or mismatching references at runtime

我了解到 C# 中基本上有两种不同的依赖关系: 编译所需的那些和 运行 需要的那些。 虽然很明显 building/compiling 在缺少引用时会失败, 我不太清楚应用程序如何在 运行 时仍然会因为在 运行 时缺少或不匹配的依赖项而中断。

基本上有两种可能。

1 运行时缺少依赖项

如果您根据依赖项(主要是作为 .dll 文件的程序集)编译您的应用程序,但您没有在您的应用程序运行的机器/文件夹中,它会在运行时失败。

示例:您的源文件夹中有一个 .dll,但忘记将其复制到输出文件夹。

2 版本不兼容

如果您针对版本 A 的依赖项编译您的应用程序并且在运行时它使用版本 B,则如果您调用的方法不兼容或缺失,则它可能会失败。这将导致 MissingMethodException

示例:编译时的方法如下所示 Foo(string bar),但运行时的方法如下所示 Foo(string bar, string baz)