2016-11-14 2 views
0

У меня есть два решения: A и B. В решении A у меня есть проект A1 (который выводится в DLL). A1 первоначально используется только в рамках решения A, но из-за некоторых непредвиденных обстоятельств один из проектов в решении B в конечном итоге потребовал его.Почему я получаю контрольные точки в DLL-коде

Я скопировал DLL-файл проекта A1 из решения A в решение B, добавив его в качестве ссылки. Я сделал это в ручном режиме; Я должен скопировать и заменить DLL вручную всякий раз, когда есть изменение в A1.

Все в порядке до одного дня, я понял, что получаю контрольные точки во время отладки. К моему удивлению, точки останова находятся в классе от A1. Я могу видеть полные коды, которые я написал в решении A, включая комментарии. Когда я удалю точки останова оттуда, он вернется, когда я отлажу в следующий раз. Однако, похоже, на следующий день он исчез.

Теперь мой вопрос: Почему я могу видеть полные коды, когда я не копировал источник A1 в решение B? Я понимаю, что для DLL требуется декомпилятор для возврата в состояние своего кода. Даже с декомпилятором он должен только дать мне нечто похожее, но не точное. Самое удивительное, что я могу видеть все комментарии, которые я написал.

Я использую VS2012 Pro, используя .NET 4.5.

+0

Чтобы понять это, я рекомендую читать ... http://www.codeproject.com/Articles/37456/How-To-Inspect-the-Content-of-a-Program-Database-P – Mick

ответ

1

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

В течение дней, когда это происходило, вероятно, вы скопировали как DLL, так и .pdb, но затем вы получили новую версию .dll, и вы либо удалили pdb, либо версии nolonger, ,

+0

Wow, для меня это является открытием. Не знал, что есть такая особенность. Благодарю. – Jai

Смежные вопросы