Xamarin Hot Start не может подготовить iOS со второго компьютера

Я делаю приложение .Net MAUI, которое хочу опубликовать на iOS.

Я сделал это успешно со своего основного ПК после регистрации в программе разработки Apple и создания всех необходимых ключей и сертификатов. Однако теперь я пытаюсь работать со своего ноутбука и не могу запустить Hot Start:

Произошла ошибка при попытке автоматически подготовить проект: «Сертификат: Apple Development: Created via API () уже существует, но не может быть найден в локальной цепочке ключей. Возможно, он был создан на другой машине разработки. Импортируйте сертификат и закрытый ключ с этого компьютера или отзовите его и повторите попытку автоматического создания нового.

Теперь я могу жить с этим пока. Однако завтра мне понадобится мой ноутбук, чтобы опубликовать приложение в App Store, потому что у меня дома нет Mac.

В первый раз, когда я получил эту ошибку, я был сбит с толку, потому что пытался аутентифицироваться с тем же сертификатом, который я использую на другой машине. Затем я попытался создать вторую пару сертификатов на этой машине и использовать ее, однако это снова не сработало. Точно такая же ошибка, что странно, потому что, когда я добавил новый сертификат в настройки Xamarin.AppleAcount, ошибка содержала ключ сертификата из моего исходного сертификата (тот, который работает на другом компьютере).

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

«Я пытался пройти аутентификацию с помощью того же сертификата» — [Вы упоминаете пару ключей, так что извините, если это очевидно.] Вы уверены, что у вас есть этот закрытый ключ на втором компьютере? Я понятия не имею, как это работает на ПК, но с Mac необходимо вручную экспортировать закрытый ключ из цепочки для ключей первого Mac, импортировать его на второй Mac. (Просто общедоступного сертификата недостаточно.) Что касается упоминания об оригинальном сертификате - у меня есть смутное представление о том, что либо проект, либо устройство придерживаются упоминания об оригинале. Может быть, вы можете найти это и очистить его?

ToolmakerSteve 18.04.2023 20:43

@ToolmakerSteve VS требует, чтобы я предоставил открытый ключ, эмитента и путь к файлу сертификата, поэтому я не могу обойти это. Я загрузил файл частного сертификата в частный репозиторий github. Проект вообще не связан с сертификатами, а VS 2022 на моем ноутбуке - это новая новая установка (я еще даже не импортировал настройки с моего ПК)

Alex 18.04.2023 21:13

Частный репозиторий github каким-то образом используется VS в сертификации? В худшем случае, вероятно, есть какой-то хакерский способ очистить состояние тестового устройства, чтобы переключить его между двумя разными ПК VS, каждый со своим сертификатом. Что произойдет, если вы вручную удалите приложение с устройства, а затем подключитесь ко второму компьютеру с собственным сертификатом?

ToolmakerSteve 18.04.2023 21:21

@ToolmakerSteve, частное репо — это просто то, как я перемещаю файл сертификата с одной машины на другую. Это была хорошая идея, удалить приложение, но, к сожалению, результат тот же.

Alex 19.04.2023 00:23

@ToolmakerSteve, зачем сертификату нужна любая машина? Насколько я понимаю, цель состоит в том, чтобы проверить себя перед Apple API. Какая разница, буду ли я тестировать на одном устройстве или на нескольких? А если я использую несколько машин для разработки?

Alex 19.04.2023 00:26

Я согласен; это один существенный вопрос. Другой вопрос, где происходит конфликт? Если нет какой-то странной зависимости от информации на сервере сертификатов Apple (потому что VS приходится обходить некоторую зависимость от Apple, которая предполагает, что задействована цепочка ключей Mac, и не предоставляет VS на ПК такой же уровень доверия? Хвататься за соломинку здесь. ), то либо на устройстве, либо где-то на ПК. (1) В отношении устройства: убедитесь, что информация не кэширована: выключите и снова включите устройство после удаления приложения. (2) Для ПК: может быть, что-то кэшировано в .csproj? Или в .obj, .bin или скрытом .vs проекта?

ToolmakerSteve 19.04.2023 00:32

В (2) я предполагаю, что второму ПК предоставляется собственный сертификат с закрытым ключом.

ToolmakerSteve 19.04.2023 00:35

Давайте продолжим обсуждение в чате.

Alex 19.04.2023 08:53
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
8
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Создание различных сертификатов и профилей — это решение, вы также можете импортировать сертификат на другой компьютер Mac или Windows. Для этого вам нужно экспортировать файл p12 из Связки ключей на вашем первом Mac.

Подробные шаги: Откройте Доступ к цепочке ключей -> Логин-> Сертификаты> Разверните сертификат, чтобы был виден связанный закрытый ключ, щелкните ключ правой кнопкой мыши и выберите Экспорт. (Вам будет предложено ввести имя файла и пароль) Перенесите и сохраните файл на другой Mac, затем импортируйте сертификат: Откройте Доступ к связке ключей -> Файл-> Импортировать элементы-> выберите экспортированный сертификат (введите пароль).

Если вы хотите импортировать этот сертификат на свой компьютер с Windows: Откройте VS->Инструменты->Параметры->Xamarin->Учетные записи Apple->выберите свою команду->Просмотр сведений->Импорт сертификата. После этого вы можете загрузить профиль подготовки и дважды щелкнуть профиль для установки на свой Mac (для Windows, вы можете открыть VS-> Инструменты-> Параметры-> Xamarin-> Учетные записи Apple-> выберите свою команду-> Просмотреть подробности-> Загрузить все профили) Затем вы можете выбрать соответствующий сертификат и профиль подготовки в Свойства-> iOS -> Подписание пакета-> Ручная подготовка.

Кроме того, вы также можете обратиться к этому случаю с тем же сообщением об ошибке Горячий перезапуск Xamarin: получить «Сертификат уже существует, но его нельзя найти в локальной цепочке ключей» и исправить эту ошибку без создания разных сертификатов и профилей.

Спасибо. Я попробую все это, когда у меня будет возможность в следующие дни, и я свяжусь с вами.

Alex 22.04.2023 05:26

Пожалуйста. Ждем ваших отзывов. @Алекс

Liyun Zhang - MSFT 24.04.2023 11:25

Экспорт в файл .p12 помог, большое спасибо. Ранее я пытался импортировать файлы .cer, но это не сработало. Также до импорта .p12 мои сертификаты были известны VS, но их статус был «Отсутствует в цепочке ключей», а после импорта они «Действительны». Я предполагаю, что с помощью файлов p12 импортированы закрытые ключи? Возможно, это также можно сделать, вручную загрузив сертификаты с Apple Developer и установив их в Windows, но я не пробовал этого, так как не хотел бы испортить свою текущую конфигурацию.

Alex 06.05.2023 14:26

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