C # dll не обновляется между проектами - PullRequest
1 голос
/ 03 октября 2009

У меня есть проект на C # в Visual Studio, который создает DLL, и другой консольный проект, который включает первый в качестве ссылки. Они оба в одном решении.

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

Например, в DLL у меня есть класс Converters. Если я добавлю метод

public static void test() {}

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

Если я захожу и удаляю dll-файлы, то перестраиваю, что работает (или еще лучше, удалите каталоги bin и obj), но это выглядит довольно радикально.

Я уверен, что это основная ошибка, но я не могу найти решение после некоторого поиска в Google.

Ответы [ 9 ]

8 голосов
/ 03 октября 2009

Как вы добавляете ссылку? В качестве ссылки на проект или путем просмотра в DLL? Если вы используете последний, он скопирует его локально в каталог bin вашего консольного приложения и не обновит его, если вы не удалите его вручную. Если вы добавите его в качестве ссылки на проект, он скопирует его по мере необходимости.

6 голосов
/ 03 октября 2009

Точная вещь случилась со мной однажды в проекте - оказалось, что команда build не была настроена для сборки этих DLL.
Проверьте Build - Configuration Manager и убедитесь, что проект проверен:

Configuration Manager Screenshot
(Изображение из msdb - Настройка конфигурации сборки)

2 голосов
/ 15 декабря 2016

Одна из вещей, на которые следует обратить внимание, - это целевая структура проектов. Если вы компилируете свой проект А с целевой средой, отличной от той, что есть в проекте Б, и в ней упоминаются библиотеки проекта А, вы можете столкнуться с такими проблемами. Поэтому убедитесь, что целевая структура для обоих проектов одинакова.

2 голосов
/ 19 марта 2015

закрыть проект visualStudio и Перестройте заново свою DLL (другой проект visualStudio)

0 голосов
/ 12 сентября 2017

Я ненавижу бить мертвый вопрос SO, но через 8 лет после первоначального вопроса, и ни один из вышеперечисленных вопросов не решил для меня проблему, моя проблема была в VS2013, но для ее решения я просто удалил и повторно добавил ссылку на DLL в проекте, который ее вызывает.

Я надеюсь, что это поможет некоторым людям в более новой сфере VS иметь ту же проблему.

0 голосов
/ 28 октября 2015

Убедитесь, что у вас нет ddl внутри папки bin вашего проекта. Пока я добавлял ссылку, просматривая dll, я забыл, что вручную копирую вставленную версию в эту папку. Независимо от того, сколько раз я чистил и перестраивал, он не обновлялся.

Удаление этой dll и повторная ссылка исправили проблему.

0 голосов
/ 29 марта 2013

отметьте папку, в которой находится ссылка. он содержит файл обновления с относительным путем в нем? если это так, и если имена сборок в расположении, указанном относительным путем, являются общими с теми из ссылок (проекта), которые должны автоматически обновляться, то эти ссылки больше не обновляются автоматически! в итоге вы получаете статическую ссылку на сборки, представленные в относительном пути, содержащемся в файле обновления. Вам также может понадобиться удалить ключ projectreferences в файле sln и добавить ссылки заново

0 голосов
/ 03 октября 2009

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

  • Возможна проблема со ссылкой. Попробуйте удалить ссылку в обозревателе решений, прочитать ссылку и посмотреть, исправит ли это что-то. При повторном добавлении убедитесь, что это ссылка на проект, а не ссылка на файл.
  • Возможно, отметки времени в файлах в вашем проекте отключены. Посмотри, есть ли они в будущем.
0 голосов
/ 03 октября 2009

Измените ссылку на dll для Project вместо вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...