C# dll не обновляется между проектами
У меня есть проект C# в Visual Studio, который строит DLL, и другой консольный проект, который включает первый в качестве ссылки. Они оба в одном решении.
Проблема в том, что когда я добавляю методы в DLL, а затем перестраиваю консольный проект, кажется, их не поднимают.
Например, в DLL у меня есть класс Converters. Если я добавлю метод
public static void test() {}
он просто не отображается в консольном приложении. Intellisense не выполняет автозаполнение, и если я ввожу его вручную, выдает ошибку компилятора.
Если я захожу и удаляю dll-файлы, то перестраиваю, что работает (или, что еще лучше, удалите каталоги bin и obj), но это выглядит довольно радикально.
Я уверен, что это основная ошибка, но я не могу найти решение после некоторого поиска в Google.
9 ответов
Как вы добавляете ссылку? В качестве ссылки на проект или путем перехода к DLL? Если вы используете последний, он скопирует его локально в каталог bin вашего консольного приложения и не обновит его, если вы не удалите его вручную. Если вы добавите его в качестве ссылки на проект, он скопирует его по мере необходимости.
Однажды в проекте со мной произошло то же самое - оказалось, что команда build не была настроена для сборки этих DLL.
Проверьте Build - Configuration Manager
и убедитесь, что проект проверен:
Одна из вещей, на которые стоит обратить внимание - это целевая структура проектов, если вы компилируете свой проект А с целевой средой, отличной от той, что есть в проекте Б, и она ссылается на библиотеки проекта А, вы можете столкнуться с подобными проблемами. Итак, убедитесь, что целевая структура для обоих проектов одинакова.
закройте проект visualStudio и заново соберите вашу dll (другой проект visualStudio)
Убедитесь, что у вас нет ddl внутри папки bin вашего проекта. Пока я добавлял ссылку, просматривая dll, я забыл, что вручную копирую вставленную версию в эту папку. Независимо от того, сколько раз я чистил и перестраивал, он не обновлялся.
Удаление этой dll и повторная ссылка исправили проблему.
Проверьте папку, которая содержит ссылку. он содержит файл обновления с относительным путем в нем? если это так, и если имена сборок в расположении, указанном относительным путем, являются общими с теми из ссылок (проекта), которые должны автоматически обновляться, то эти ссылки больше не обновляются автоматически! в итоге вы получаете статическую ссылку на сборки, представленные в относительном пути, содержащемся в файле обновления. вам также может понадобиться удалить ключ projectreferences в файле sln и добавить ссылки заново
Я не хочу бить мертвый вопрос SO, но спустя 8 лет после первоначального вопроса, и ни один из вышеперечисленных вопросов не решил для меня проблему, моя проблема была в VS2013, но для ее решения я просто удалил и повторно добавил ссылку на DLL в проект, который вызывает его.
Я надеюсь, что это поможет некоторым людям в новой сфере VS иметь ту же проблему.
Это, безусловно, неожиданное поведение. Похоже, что связь между двумя проектами нарушена. На ум приходят два вопроса.
- Возможна проблема со ссылкой. Попробуйте удалить ссылку в обозревателе решений, прочитать ссылку и посмотреть, исправит ли это что-то. При повторном добавлении убедитесь, что это ссылка на проект, а не ссылка на файл.
- Возможно, отметки времени в файлах в вашем проекте отключены. Посмотри, есть ли они в будущем.