2012-02-03 1 views
0

Hereis ситуация:проекта изменения «волшебство», когда DLL удаляется

У меня есть папка, которая содержит библиотеки библиотеки DLL, которые не встроены как часть моего решения - позволяет сказать, что это .\libs. Я добавляю ссылки на эти DLL. Затем я строю. Все отлично.

Если я затем удалю папку libs и перестрою мое решение, компиляция все равно будет успешной! Странно - я бы ожидал ошибок компиляции, поскольку библиотек DLL не существует!

Но, глядя на ссылочные свойства в Visual studio, я вижу, что путь ссылки был изменен с .\libs\foo.dll на myproject\bin\Debug\foo.dll. Таким образом, он собирает DLL, на которую ссылается, из своего старого выхода сборки.

Если я открою myproject.csproj в текстовом редакторе, я вижу, что ссылка HintPath по-прежнему .\libs\foo.dll. Если я заново создаю папку libs, визуальная студия все еще использует myproject\bin\Debug\foo.dll (она не возвращается к актуальной DLL, которую я хочу!)

Ожидается ли такое поведение? Есть ли способ остановить это поведение, потому что это вызывает у меня проблемы - особенно когда я хочу перестроить myproject с разными версиями libs: половина времени, когда я нахожу, что использую другую версию, чем то, что я хотел.

+0

Возможный дубликат [HintPath vs ReferencePath в Visual Studio] (http://stackoverflow.com/questions/1882038/hintpath-vs-referencepath-in-visual-studio) –

+0

см. Ответ ниже –

+0

Если это больно, сделайте это. Начиная с копирования DLL в/libs, вместо этого ссылайтесь на их исходное место сборки. Если вам нужно скопировать по какой-то причине, то проверьте их на исходный контроль. Если они меняются слишком часто, чтобы сделать это практическим, добавьте проекты, которые создали их для вашего решения. –

ответ

0

Это не волшебство. Свойство DLL Copy Local, вероятно, установлено в true, вот и все.
Установка значения false приведет к желаемому поведению.

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