У нас была очень интересная проблема с проектом Win Forms.Это было решено.Мы знаем, что случилось, но мы хотим понять, почему это произошло.В будущем это может помочь другим людям, у которых возникла подобная проблема.
Проект WinForms провалился на 2 компьютерах нашего клиента.Ошибка была неясной ошибкой kernel.dll.Проект работал нормально на 3 других компьютерах.
Мы обнаружили, что .DLL (log4net.dll - очень популярная библиотека журналов с открытым исходным кодом) отсутствует в нашей папке выпуска.Это было ранее в нашей папке выпуска.Почему это отсутствовало в этом последнем выпуске?
Это отсутствовало, потому что я, должно быть, установил на своем компьютере разработчика программу, которая использовала 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.