Почему моя ссылка на DLL возвращается к предыдущей настройке?

У меня есть пара.EXE/.DLL, которую нужно синхронизировать.

.EXE имеет ссылку на DLL.

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

Тем не менее, проект.EXE необходимо обновить, чтобы явно ссылаться на новую DLL каждый раз, когда я обновляю.EXE. Я делаю это путем:

Removing the old DLL reference from the EXE project
Adding back the reference, pointing to the location of the latest version of the DLL

Примечание:.EXE прекрасно компилируется без этих шагов, но он не будет работать, если будет ссылаться на старое и жить вместе с новым.

Потенциальная проблема заключается в том, что всякий раз, когда я возвращаюсь к проекту.EXE, он возвращается к ссылке на старую DLL, а не к той, на которую я недавно установил ссылку! Итак, я удаляю версию 1.3.3889.27538 с одним путем, заменяя его версией 1.4.0.8 в другом пути (выходная папка проекта DLL), и.EXE компилируется (и запускается) нормально, но затем, когда я снова открываю проект EXE DLL снова ссылается на версию 1.3.3889.27538 библиотеки DLL, указывая путь к этой версии.

Есть некоторые настройки где-то упорно возвращается к старой DLL всякий раз, когда я оборачиваюсь?

Я не знаю, является ли это значительным, но свойство "Копировать локальное" ссылки на DLL в проекте EXE-файла установлено на "Истина"

ОБНОВИТЬ

ПРИМЕЧАНИЕ. Когда я удаляю, а затем добавляю ссылку на DLL (в последнюю версию DLL) и затем создаю EXE-файл, мне нужно выбрать "ОК" в диалоговом окне, которое сообщает мне: "Произошла ошибка при сохранении пользовательских настроек проекта. для файла.csdproj.user

Затем мне нужно выбрать кнопку "Сохранить" в диалоговом окне "Сохранить файл как", чтобы сохранить файл проекта. Как только я выбираю "Да", чтобы заменить уже существующий файл, он хорошо собирается.

Что значит? Что важно?

1 ответ

Решение

При добавлении ссылки на библиотеку классов (DLL) третьей стороны в проект.NET появляется соответствующая строка в файле конфигурации проекта (.csproj или .vbproj). Наряду с другими настройками в этой строке указывается версия сборки библиотеки классов, на которую ссылаются. Например:

<Reference Include="Telerik.WinControls, Version=2015.1.225.40, Culture=neutral, PublicKeyToken=5bb2a467cbec794e, processorArchitecture=MSIL" />

Это означает: если вы обновляете версию внешней сторонней библиотеки, вам также необходимо явно обновить ссылку на проект.

Если вы хотите, чтобы ваша внешняя библиотека классов всегда указывала на последнюю сборку, это должна быть ссылка на проект. Другими словами, вы добавляете проект библиотеки классов в свое решение, а затем в свой основной проект просто добавляете ссылку на этот проект (DLL). Таким образом, вы всегда получите последнюю зависимую DLL в вашей выходной папке.

Но опять же, если вы работаете с сторонними библиотеками, вы должны явно обновить ссылку на проект, чтобы она указала на последнюю DLL.

Другие вопросы по тегам