2013-08-27 5 views
3

У меня есть DLL-библиотека .NET (DLLA), на которую ссылается приложение 1 (копия локальная). Поэтому, когда я создаю приложение 1, DLLA помещается в папку BIN приложения 1. DLLA ссылается на DLLB, который почти никогда не используется.DLL ссылки DLL

Я использую, чтобы заметить, что DLLB был помещен в папку BIN приложения 1, но этого больше не происходит. Есть ли причина для этого, которую я не понимаю? Как приложение 1 принимает решение о том, следует ли разместить DLLB в свою папку BIN?

+0

Доступна ли DLLB? Он не подбирается, если его нельзя «найти» в более строгих условиях, чем в DLLA. (Ну технически просто разные). Самое простое решение этой проблемы - ссылаться на DLLB, это вариант в этом случае? – Guvante

ответ

4

При компиляции приложения компилятор ищет ссылки и использование ваших ссылок. Если вы не используете какой-либо класс, статический метод или что-либо еще из ссылки, он не нужен, поэтому он не будет включен. Например, если у вас есть проект A, B и C. Если C код A и ссылки A B, вы не получите B.dll если вы не используете B на всех:

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 вообще, я не думаю, что ему нужна ссылка вообще (я просто тестировал небольшие проекты, и это позволило мне). Могут быть более сложные ограничения (возможно, через Reflection), в которых, вероятно, вы могли бы загрузить DLL во время выполнения. В этом случае вам все равно понадобится путь к dll (и B может заставить генерацию dll автоматически). –

+0

Можете ли вы представить пример Reflection, где может возникнуть проблема? – w0051977

Смежные вопросы