Вот ситуация:
У меня есть папка, содержащая библиотеки DLL, которые не являются частью моего решения - допустим, это .\libs
.
Я добавляю ссылки на эти библиотеки DLL. Я тогда строю. Все хорошо.
Если я затем удаляю папку libs и перестраиваю свое решение, компиляция все равно будет успешной! Странно - я бы ожидал ошибки компиляции, поскольку библиотеки dll там нет!
Но, глядя на свойства ссылок в Visual Studio, я вижу, что путь ссылок был изменен с .\libs\foo.dll
на myproject\bin\Debug\foo.dll
. Таким образом, он выбирает библиотеку DLL, на которую ссылаются, из своего старого результата сборки.
Если я открою myproject.csproj в текстовом редакторе, я увижу, что HintPath ссылки по-прежнему .\libs\foo.dll
. Если я воссоздаю папку libs
, Visual Studio все равно использует myproject\bin\Debug\foo.dll
(она не возвращается к той самой DLL, которую я хочу!)
Это ожидаемое поведение?
Есть ли способ остановить это поведение, потому что оно вызывает у меня проблемы - особенно когда я хочу перестроить свой проект с другими версиями библиотек: половину времени я обнаруживаю, что использую другую версию, чем я хотел.