Справочник .NET «Копировать локальный» Истина / Ложь устанавливается на основе содержимого GAC

У нас была очень интересная проблема с проектом Win Forms. Это было решено. Мы знаем, что случилось, но мы хотим понять, почему это произошло. Это может помочь другим людям в будущем, у которых есть подобные проблемы.

Проект WinForms провалился на 2 компьютерах наших клиентов. Ошибка была неясной ошибкой kernel.dll. Проект отлично работал на 3 других компьютерах.

Мы обнаружили, что .DLL (log4net.dll - очень популярная библиотека журналов с открытым исходным кодом) отсутствовал в нашей папке выпуска. Это было ранее в нашей папке выпуска. Почему это отсутствовало в этом последнем выпуске?

Это отсутствовало, потому что я, должно быть, установил программу на своем устройстве Dev, которая использовала log4net.dll, и она была добавлена ​​в глобальный кэш сборок.

Когда я проверил ссылки решения для log4net.dll, они были изменены на «copy local = FALSE». Они должны были измениться автоматически, потому что log4net.dll присутствовал в моем GAC.

Вот где начинается мой вопрос:

Почему моя ссылка на log4net.dll была изменена с COPY LOCAL = TRUE на COPY LOCAL = FALSE? Я подозреваю, что это потому, что он был добавлен в мой GAC другой программой.

Как мы можем предотвратить это снова? В настоящее время, если я устанавливаю часть программного обеспечения, которая использует общую библиотеку, и добавляет ее в мой GAC, то мои SLN, которые ссылаются на эту DLL, изменятся с Copy Local TRUE на FALSE.

Ответы на вопрос(5)

Ваш ответ на вопрос