Самый простой способ - Build | Публиковать. Просто отключите любые действия в Интернете, если вы этого не хотите. Вы можете сделать это в Project -> Settings -> Publish. Проверьте, например, настройки «Обновления».
Этот подход к использованию new-object
должен работать:
$cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate `
-ArgumentList @(,$bytes)
Фокус в том, что PowerShell ожидает массив аргументов конструктора. Когда есть только один аргумент, и это массив, он может запутать алгоритм разрешения перегрузки PowerShell. Вышеприведенный код помогает, поместив массив байтов в массив только с одним элементом.
Удивительно для меня, я пробовал это, и кажется, что он работает:
[byte[]] $certPublicBytes = something
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate] $certPublicBytes
return $cert
Я еще не знаю, по какой магии он работает, поэтому ваши объяснительные комментарии оценены. :)
(Примечание: после того, как я нашел, что использование квадратного скобки-типа-типа, как я делал выше, может также привести к другим ошибкам, таким как «Невозможно преобразовать значение» System.Byte [] »в введите «System.Security.Cryptography.X509Certificates.X509Certificate». Ошибка: «Не удается найти запрошенный объект». Явный подход New-Object, рекомендованный Кейтом, кажется лучше!) [/ g2]