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