在 .NET 中,我什么时候必须引用外部库也引用的 DLL?
In .NET, when do I have to reference a DLL that an external library also references?
我正在尝试了解我的 .NET 项目何时需要引用外部库引用的 DLL。
实际例子:Microsoft.Bot.Builder依赖于Chronic.Signed.dll
如果我引用 Microsoft.Bot.Builder.dll,我是否也必须在自己的项目中添加对 Chronic.Signed.dll 的引用,即使我没有直接使用它?还是只有在某些情况下才需要?
除非您引用这些包中的特定内容,否则您不需要这样做。如果您缺少会导致您的代码无法编译或 运行 的依赖项,编译器很可能会抱怨它。
作为一个需要安装多个 DLL 的简单示例,当您通过 NuGet 安装程序包时,有时程序包会具有将安装的依赖项,以便能够 运行 中的代码包裹。但是,它们中的大多数将独立于任何其他包进行安装。您可以通过将一些引用放在另一个项目中不存在的库项目中,然后尝试 运行 来自主项目的代码来测试它如何跨项目工作。您不需要引用与库项目相同的 DLL。
If I reference Microsoft.Bot.Builder.dll, do I always have to also add
a reference to Chronic.Signed.dll in my own project, even if I'm not
using it directly? Or do I only have to only under certain
circumstances?
当您使用 NuGet 添加包时,相关包也会随它们一起安装。因此,当您添加 Microsoft.Bot.Builder.dll 时,它也会自动安装 Chronic.Signed.dll。
现在到了,为什么?一些 lib 包依赖于其他包。就像 Microsoft.Bot.Builder.dll 中的函数可能正在使用 Chronic.Signed.dll 中的一些辅助函数或主函数。因此,如果您删除 Chronic.Signed.dll 的引用,您将收到缺少依赖项或引用的错误。
do I always have to also add
a reference to Chronic.Signed.dll in my own project, even if I'm not
using it directly?
是的,因为 Microsoft.bot 正在内部使用它。
并非所有包都依赖于其他包。有些是独立的,从不安装任何其他 dll,但有些会。
当您使用 Microsoft.Bot.Builder
中的某些内容时,您需要在其 public API 中公开来自 Chronic.Signed
的内容时执行此操作。例如(并且我自己没有通过库),假设 Chronic.Signed.IFoo
是 Microsoft.Bot.Builder.FooImpl
实现的接口。如果您在代码中引用 Microsoft.Bot.Builder.FooImpl
,那么您还需要引用 Chronic.Signed
,这样您的代码才能访问接口。
我正在尝试了解我的 .NET 项目何时需要引用外部库引用的 DLL。
实际例子:Microsoft.Bot.Builder依赖于Chronic.Signed.dll
如果我引用 Microsoft.Bot.Builder.dll,我是否也必须在自己的项目中添加对 Chronic.Signed.dll 的引用,即使我没有直接使用它?还是只有在某些情况下才需要?
除非您引用这些包中的特定内容,否则您不需要这样做。如果您缺少会导致您的代码无法编译或 运行 的依赖项,编译器很可能会抱怨它。
作为一个需要安装多个 DLL 的简单示例,当您通过 NuGet 安装程序包时,有时程序包会具有将安装的依赖项,以便能够 运行 中的代码包裹。但是,它们中的大多数将独立于任何其他包进行安装。您可以通过将一些引用放在另一个项目中不存在的库项目中,然后尝试 运行 来自主项目的代码来测试它如何跨项目工作。您不需要引用与库项目相同的 DLL。
If I reference Microsoft.Bot.Builder.dll, do I always have to also add a reference to Chronic.Signed.dll in my own project, even if I'm not using it directly? Or do I only have to only under certain circumstances?
当您使用 NuGet 添加包时,相关包也会随它们一起安装。因此,当您添加 Microsoft.Bot.Builder.dll 时,它也会自动安装 Chronic.Signed.dll。
现在到了,为什么?一些 lib 包依赖于其他包。就像 Microsoft.Bot.Builder.dll 中的函数可能正在使用 Chronic.Signed.dll 中的一些辅助函数或主函数。因此,如果您删除 Chronic.Signed.dll 的引用,您将收到缺少依赖项或引用的错误。
do I always have to also add a reference to Chronic.Signed.dll in my own project, even if I'm not using it directly?
是的,因为 Microsoft.bot 正在内部使用它。
并非所有包都依赖于其他包。有些是独立的,从不安装任何其他 dll,但有些会。
当您使用 Microsoft.Bot.Builder
中的某些内容时,您需要在其 public API 中公开来自 Chronic.Signed
的内容时执行此操作。例如(并且我自己没有通过库),假设 Chronic.Signed.IFoo
是 Microsoft.Bot.Builder.FooImpl
实现的接口。如果您在代码中引用 Microsoft.Bot.Builder.FooImpl
,那么您还需要引用 Chronic.Signed
,这样您的代码才能访问接口。