Есть ли причина отправить файл.snk вместе с исходниками проекта?

Время от времени я вижу в сети пример проекта, который содержит файл.snk, используемый для подписи результатов компиляции со строгим именем.

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

Есть ли какая-либо причина для доставки файла.snk, кроме этого "удобства"?

3 ответа

Решение

Очень актуальный вопрос. Я, со своей стороны, не отправляю файл SNK, но даю инструкции, как его создать самостоятельно и внести необходимые изменения (чтобы включить InternalsVisibleTo например).

Я думаю, что нынешняя практика подтолкнула мою Microsoft изменениями в обработке SNK, начиная с VS2005. Использование контейнера ключей требует ручного редактирования файла CSPROJ с недокументированным элементом MSBUILD KeyContainerName... по умолчанию VS - копировать SNK в каталог проекта, что удобно, но, по-моему, неверно.

Единственная причина, по которой я могу придумать, - это разрешить замену вашего dll в дроп-ин...

Конечно, обычно я бы сказал: "Не подписывайте свою dll, если вы хотите сделать замену". но если это установлено в GAC, подпись является обязательным условием. (или был в прошлый раз, когда я знал).

Таким образом, позволяя замены для вашей DLL, которая установлена ​​в GAC. Это единственная разумная причина, о которой я могу думать...

По крайней мере, я не вижу причин для того, чтобы отправлять как частную, так и открытую пару ключей вместе. Если вам нужно отправить исходный код, вы можете использовать.pfx, который улучшил защиту с помощью пароля, который вам понадобится для подписи сборки.

В любом случае, во многих проектах с открытым исходным кодом, как правило, добавление файла.snk в систему контроля версий является обычной (плохой практикой). Так что очень хороший вопрос!

Другие вопросы по тегам