Что делает publicsign? - PullRequest
       50

Что делает publicsign?

0 голосов
/ 15 октября 2018

Что делает опция -publicsign для компилятора C #?

Я прочитал документацию, но все еще не понимаю https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/publicsign-compiler-option

Эта опция заставляет компиляторприменять открытый ключ, но фактически не подписывает сборку

Какой открытый ключ?Подать заявку как?

1 Ответ

0 голосов
/ 12 июня 2019

В некоторых сценариях вам может потребоваться строго назвать ваши сборки - больше о строгих именах и зачем вам это может понадобиться

Как бы сильными ни были ваши сборки, можно ввести некоторые неудобства в вашем процессе разработки.Чтобы получить строгое имя сборки, вам нужно иметь доступ к открытому и закрытому ключам во время сборки.

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

В некоторых сценариях вам нужно, чтобы только несколько человек в вашей организации (Enterprise и менее вероятно в OSS, но все еще возможно) имели доступ к закрытому ключу для того, чтобы удостоверение сборки.

В тех сценариях, где вы не хотите делиться закрытым ключом публично (например, в GitHub OSS) или со всей вашей командой разработчиков (контекст предприятия), но вы также не хотите мешать процессу разработки, перед общедоступным подписанием (введено в компиляторе VS 2015, обновление 2) у вас будет только один вариант - задержка-знак ваших сборок.

Задержка подписи ваших сборок по-прежнему вносит некоторые трения в процесс разработки в случае, когда вы цените свой закрытый ключ (в конечном счете, идентичности сборок).Каждый, кому нужно собрать и запустить это, должен будет зарегистрировать эту сборку для пропуска проверки сборки во время выполнения (с помощью команды sn –Vr myAssembly.dll с правами администратора).

Получение к PublicПодписание подхода.Похоже, это ароматизированная альтернатива подхода с задержкой подписания.Публичная подпись сборки такая же, как и подпись с задержкой, но вашей команде разработчиков не нужно будет выполнять команду «sn –Vr myAssembly.dll» на своих машинах.Однако он имеет некоторые ограничения:

Известные проблемы при отладке и тестировании общедоступных подписанных сборок в .NET Framework:

  • Вы не сможете установить сборку вГлобальный кэш сборок (GAC)
  • Вы не сможете загрузить сборку в AppDomain, где включено теневое копирование
  • Вы не сможете загрузить сборку в частично доверенномAppDomain

* Примечание к сборке удостоверение : строгое имя предназначено для удостоверения сборки, а не для обеспечения безопасности.Сборка со строгим именем (полностью подписанная) выдержит проверку проверки (т. Е. «Sn -vf myAssembly.dll»), и это позволит проверить сборку и весь ее контент такой, какой он был, когда он был подписан.

Не вещь безопасности, так как довольно легко обойти сборку во время выполнения, загружая проверку строгого имени для конкретной сборки, по крайней мере, в некоторых контекстах.

...