DLL引用DLL

3

我有一个.NET DLL(DLLA),被应用程序1引用(本地复制)。因此,当我构建应用程序1时,DLLA被放置在应用程序1的BIN文件夹中。DLLA引用了DLLB,但DLLB很少被使用。

我曾经注意到DLLB被放置在应用程序1的BIN文件夹中,但现在不再这样了。我不明白这是什么原因?应用程序1如何决定是否将DLLB放入其BIN文件夹中?


DLLB 可用吗?如果它不能在比 DLLA 更严格的条件下被“找到”,它就不会被选中。(技术上讲只是不同)。解决这个问题最简单的方法是引用 DLLB,在这种情况下是否可行? - Guvante
1个回答

4

当您编译应用程序时,编译器会查找您的引用及其使用情况。如果您没有使用任何类、静态方法或者来自某个引用的其他内容,则该引用不是必需的,因此它将不会被包含。例如,如果您有项目A、B和C。如果C引用A,而A引用B,则只有在您使用了B时才会得到B.dll

using B;
namespace A
{
    public class Class1
    {

    }
}

上述代码不会在您的bin文件夹中包含一个dll。但是,以下代码将会:

using B;
namespace A
{
    public class Class1
    {
        void c()
        {
            B.Class1 b = new B.Class1();
            Console.Write(b.ToString());
        }
    }
}

谢谢 +1。如果A.DLL引用了B.DLL,而B.dll又引用了C.DLL,那么A.dll是否需要引用C.DLL?我在这里读到有些人在没有这个引用的情况下会出现错误的问题。 - w0051977
如果A根本不使用C,我认为它根本不需要引用(我刚刚测试了一下小项目,它允许我这样做)。可能会有更复杂的情况(也许是通过反射),在这种情况下,您可能仍然可以在运行时加载dll。在这种情况下,您仍然需要dll的路径(并且B可能会自动强制生成dll)。 - Hanlet Escaño
你能提供一个可能存在问题的反射示例吗? - w0051977
我想不出任何情况。这就是为什么我说“可能会有”,也许在更复杂的情况下,它 可能 发生。虽然这种情况从未发生过。 - Hanlet Escaño

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接