2013-08-27 145 views
3

我有一个.NET DLL(DLLA),它是由app1(复制本地)引用的。因此,当我构建app1时,DLLA被放置在app1的BIN文件夹中。 DLLA引用DLLB,这是很少使用的。DLL引用DLL

我用来注意到DLLB被放置在app1的BIN文件夹中,但这不再发生。有没有理由让我不明白? app1如何决定是否将DLLB放入其BIN文件夹中?

+0

DLLB是否可用?如果它不能在比DLLA更严格的条件下“找到”,它将不会被拾取。 (技术上完全不同)。这个问题的最简单的解决方案是引用DLLB,在这种情况下是否是一个选项? – Guvante

回答

4

编译应用程序时,编译器会查找引用和引用的用法。如果您没有使用任何类,静态方法或引用中的其他内容,则不需要,因此不会包含它。举例来说,如果你有项目A,B和C.如果C参考A和A引用B,除非你使用B中的所有,你不会得到一个B.dll

using B; 
namespace A 
{ 
    public class Class1 
    { 

    } 
} 

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

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

谢谢+1。如果A.DLL引用B.DLL和B.dll引用C.DLL,那么A.dll是否必须引用C.DLL?我在这里读到了一些人的问题,如果这个参考资料不到位,那么他们会得到错误。 – w0051977

+0

如果A根本不使用C,我认为它根本不需要参考(我只是用小项目进行测试,它允许我)。可能会有更复杂的细分(可能通过反射),其中可能会在运行时加载dll。在这种情况下,你仍然需要一个dll路径(而B可能会自动强制生成dll)。 –

+0

您是否能够提供可能存在问题的反射示例? – w0051977