Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Следующие параметры управляют параметрами безопасности компилятора. Новый синтаксис MSBuild выделен полужирным шрифтом. Для старого синтаксиса csc.exe используется формат code style.
-
PublicSign /
-publicsign: публичное подписывание сборки. -
DelaySign /
-delaysign: отложить подпись для сборки, используя только открытую часть ключа строгого имени. -
KeyFile /
-keyfile: указание файла ключа строгого имени. -
KeyContainer /
-keycontainer: указание контейнера ключа строгого имени. -
HighEntropyVA /
-highentropyva: включить технологию ASLR с высокой энтропией.
Примечание.
Дополнительные сведения о настройке этих параметров для проекта см. в параметрах компилятора.
PublicSign
Этот параметр указывает компилятору на необходимость применения открытого ключа, но фактически не подписывает сборку. Кроме того, параметр PublicSign задает в сборке бит, тем самым сообщая среде выполнения, что файл подписан.
<PublicSign>true</PublicSign>
С параметром PublicSign необходимо использовать параметр KeyFile или KeyContainer. Параметры KeyFile и KeyContainer указывают открытый ключ. Параметры PublicSign и DelaySign — взаимоисключающие. При таком подписывании в сборку добавляется открытый ключ. Кроме того, в сборке устанавливается флаг "подписано". Такой подход иногда называют "фиктивным подписыванием" или "подписыванием OSS". Но фактически сборка не подписывается закрытым ключом. Разработчики используют публичное подписывание для проектов с открытым кодом. Им нужно создавать сборки, которые совместимы с выпущенными "полностью подписанными" сборками, но у них нет доступа к закрытому ключу, который использовался для подписывания сборок. Так как потребителям редко нужно проверять, полностью ли подписана сборка, создаваемые сообществами сборки можно использовать практические во всех случаях, в которых может использоваться полностью подписанная сборка.
DelaySign
Этот параметр указывает компилятору зарезервировать пространство в выходном файле, чтобы впоследствии добавить в него цифровую подпись.
<DelaySign>true</DelaySign>
Если требуется полностью подписанная сборка, используйте параметр DelaySign-. Если нужно лишь поместить в сборку открытый ключ, используйте параметр DelaySign. Параметр DelaySign не действует, если не использовать его с KeyFile или KeyContainer. Параметры DelaySign и PublicSign являются взаимоисключающими. При запросе полностью подписанной сборки компилятор хэширует файл, содержащий манифест (метаданные сборки), и подписывает хэш закрытым ключом. Эта операция предназначена для создания цифровой подписи, которая хранится в файле, содержащем манифест. Если применяется отложенное подписывание сборки, компилятор не вычисляет и не сохраняет подпись, но он резервирует пространство в файле, чтобы подпись можно было добавить позже.
Параметр DelaySign позволяет поместить сборку в глобальный кэш при тестировании. После тестирования можно полностью подписать сборку, поместив в нее закрытый ключ с помощью компоновщика сборок. Дополнительные сведения см. в разделах Создание и использование сборок со строгими именами и Отложенная подпись сборки.
Ключевой файл
Задает имя файла, содержащего криптографический ключ.
<KeyFile>filename</KeyFile>
file — это имя файла, содержащего ключ строгого имени. При использовании этого параметра компилятор вставляет открытый ключ из указанного файла в манифест сборки и затем подписывает окончательную сборку закрытым ключом. Чтобы создать файл ключа, в командной строке введите sn -k file. При компиляции с параметром -target:module имя файла ключа сохраняется в модуле и включается в сборку, создаваемую при компиляции с параметром AddModules. Также можно передать сведения о шифровании компилятору с помощью параметра KeyContainer. Если требуется использовать частично подписанную сборку, укажите параметр DelaySign. Если для одной процедуры компиляции одновременно заданы параметрыKeyFile и KeyContainer, сначала будет предпринята попытка использовать контейнер ключей. В случае успеха сборка подписывается данными контейнера ключей. Если компилятору не удалось обнаружить контейнер ключей, будет предпринята попытка использовать файл, заданный параметром KeyFile. В случае успеха сборка подписывается данными из файла ключей, и эти данные о ключах будут помещены в контейнер ключей. Таким образом при следующей компиляции контейнер ключей будет действителен. Файл ключей может содержать только открытый ключ. Дополнительные сведения см. в разделах Создание и использование сборок со строгими именами и Отложенная подпись сборки.
Контейнер ключей
Задает имя контейнера криптографического ключа.
<KeyContainer>container</KeyContainer>
container — это имя контейнера ключа строгого имени. Если используется параметр KeyContainer, компилятор создает совместно используемый компонент. Компилятор вставляет открытый ключ из указанного контейнера в манифест сборки, после чего подписывает финальную сборку закрытым ключом. Чтобы создать файл ключа, в командной строке введите sn -k file. Команда sn -i устанавливает пару ключей в контейнер. Этот параметр не поддерживается, если компилятор работает в CoreCLR. Чтобы подписать сборку при компиляции в CoreCLR, используйте параметр KeyFile. При компиляции с помощью OutputType имя файла ключа хранится в модуле и включается в сборку при компиляции этого модуля в сборку с помощью AddModules. Этот параметр также можно указать как настраиваемый атрибут (System.Reflection.AssemblyKeyNameAttribute) в исходном коде для любого модуля CIL. Также можно передать сведения о шифровании компилятору с помощью параметра KeyFile. Если нужно добавить в манифест сборки открытый ключ, но при этом отложить подпись сборки до завершения ее тестирования, используйте параметр DelaySign. Дополнительные сведения см. в разделах Создание и использование сборок со строгими именами и Отложенная подпись сборки.
HighEntropyVA
Параметр компилятора HighEntropyVA сообщает ядру Windows, поддерживает ли указанный исполняемый файл технологию Address Space Layout Randomization (ASLR) с высокой энтропией.
<HighEntropyVA>true</HighEntropyVA>
Этот параметр указывает, что 64-битный исполняемый файл или исполняемый файл, отмеченный параметром компилятора PlatformTarget, поддерживает виртуальный диапазон адресов с высокой энтропией. Параметр включен по умолчанию для всех версий .NET Standard и .NET Core, а платформа .NET Framework версии, начиная с платформа .NET Framework 4.5.
Параметр HighEntropyVA позволяет совместимым версиям ядра Windows использовать более высокие степени энтропии во время рандомизации размещения диапазона адресов в рамках ASLR. Использование более высоких степеней энтропии означает, что можно выделить больше адресов таким областям памяти, как стеки и кучи. Из-за этого сложнее подобрать расположение определенной области памяти. Если указан параметр компилятора HighEntropyVA, целевой исполняемый файл и все модули, от которых он зависит, должны иметь возможность обработать значения указателя, размер которых превышает 4 гигабайта (ГБ), если они выполняются как 64-разрядный процесс.