Ошибка компиляции исходного кода KeePass 2

{lang: 'ru'}

Мне всегда было интересно узнать, что находится под капотом популярного менеджера паролей KeePass 2. Сегодня я решил этим заняться. Благо, что KeePass 2 распространяется по свободной лицензии GNU, которая обязывает публиковать исходный код проектов, в том числе, если на их базе было построено что-то ещё. Исходный код можно скачать zip-архивом с сайта SourceForge.net.

Казалось бы, качай, компилируй, изучай! Но не все так просто. При попытки компиляции скачанных исходников Visual Studio выдаст следующую ошибку:

Не удалось импортировать следующий файл ключей: KeePass.pfx. Возможно, файл ключа защищен паролем. Чтобы исправить эту ошибку, повторите попытку импорта сертификата, или вручную установите сертификат в CSP сильного имени с использованием следующего имени контейнера ключей: VS_KEY_66D0808EE0476674

и

Отменен импорт файла ключа "KeePass.pfx".

Эти ошибки появляются появляются из-за того, что после сборки проекта Visual Studio пытается подписать сборку ключом разработчиков, который в оригинале должен храниться как раз в этом файле. Но в распространяемых исходниках этого ключа, естественно, нет. Иначе любой желающий мог мы внедрить в код любую закладку, подписать его сертификатами разработчиков и выдать свой “троянский” менеджер паролей за оригинальный KeePass.

Отсутствие ключа в KeePass.pfx не убирает желания скомпилировать исходники. После непродолжительных поисков в интернете по запросу KeePass.pfx, я нашёл решение этой проблемы. В свойствах решения “KeePass” и “KeePassLib”, во вкладке “Подписывание” необходимо убрать галочку “Подписать сборку”.


Помимо этого, вкладка “События сборки” в поле “Командная строка события после сборки” содержит следующую команду:

"$(FrameworkSDKDir)bin\sgen.exe" /assembly:"$(TargetPath)" /force /nologo /compiler:/keycontainer:VS_KEY_27A70973F3FC3787 /compiler:/delaysign-

Её тоже необходимо удалить.

После проведения всех описанных выше манипуляций сборка KeePass 2 из исходников должна пройти успешно. Всем хороших форков ;)


Полезная статья? Их будет больше, если вы поддержите меня!