Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
В этой статье рассматриваются распространенные проблемы, которые могут возникнуть при модернизации с помощью GitHub Copilot для .NET, упорядоченные по категориям. Каждая запись представлена в формате: проблема, причина и решение, чтобы вы могли быстро найти и устранить проблемы.
Проблемы с рабочим процессом
Эти проблемы связаны с обнаружением сценариев, возобновлением работы и состоянием задачи.
Агент говорит, что "сценарии не найдены"
Cause: Агент не распознает рабочую область как проект .NET.
Solution:
- Убедитесь, что корневой каталог рабочей области содержит файл
.sln,.csprojили.vbproj. - Спросите агента: "Какое решение или файл проекта вы используете?"
- Если ваше решение или проект находятся в подкаталоге, откройте этот каталог как корневой каталог рабочей области или явно укажите агенту путь к файлу.
Агент не может возобновить предыдущую работу
Причина: Папка .github/upgrades/, в которой агент хранит все своё состояние, отсутствует или повреждена.
Solution:
- Проверьте, существует ли
.github/upgrades/папка в корневом каталоге репозитория. - Если вы случайно удалили папку, запустите сценарий свежим. Агент не может восстановиться без файлов состояния.
- Если папка существует, но файлы кажутся поврежденными, попросите агента пересмотреть и перепланировать их генерацию.
Подсказка
Зафиксируйте папку в .github/upgrades/ ветке, чтобы она была доступна во всех сеансах и на всех устройствах.
Задачи застряли в процессе выполнения
Причина: Предыдущий сеанс закончился, пока агент был в процессе выполнения задачи.
Solution:
- Агент автоматически обнаруживает устаревшие задачи в большинстве случаев. Сообщите агенту "возобновить" или "перезапустить текущую задачу".
- Если завислое состояние сохраняется, сообщите агенту "пометить текущую задачу как ожидающая и перезапустить ее" или "повторно выполнить повторную оценку и продолжить с последнего завершенного шага".
- Проверьте соответствующий
progress-details.mdфайл, чтобы понять, где остановлен предыдущий сеанс.
Агент продолжает предлагать неправильный сценарий
Причина: Анализ агента обнаружил неожиданные характеристики проекта и сделал вывод о другом сценарии, отличном от предполагаемого.
Solution:
Будьте явными в том, что вы хотите. Вместо того чтобы "обновить мой проект", скажем:
- "Я хочу обновить до .NET 10."
- "Я хочу обновить с Newtonsoft.Json до System.Text.Json".
- "Преобразуйте проект в формат стиля ПАКЕТА SDK".
Добавьте параметры сценария в scenario-instructions.md, чтобы предотвратить будущие несоответствия.
Проблемы со сборкой и компиляцией
Эти проблемы связаны с ошибками сборки, проблемами восстановления NuGet и ошибками создания кода.
Сбой сборки после изменений агента
Причина: Обновления могут вводить критические изменения API, отсутствующие пакеты или несовместимые паттерны кода.
Solution:
- Сообщите агенту о сбое. Агент автоматически анализирует ошибки.
- Если агент не может устранить проблему, отмените последний коммит (
git revert HEAD) и попросите агента попробовать другой метод. - Для сложных сбоев проверьте
execution-log.md, чтобы узнать, что изменил агент и в каком порядке.
Восстановление NuGet завершается сбоем
Причина: Несовместимость пакета с целевой платформой или сбои проверки подлинности с частными фидами NuGet.
Solution:
- Для частных веб-каналов: Перед началом обновления выполните проверку подлинности в веб-канале.
- Для несовместимых пакетов: Сообщите агенту, какой пакет является проблематичным. Агент может искать совместимые версии или предлагать альтернативные пакеты.
-
Проблемы с подключением канала: Убедитесь, что вы можете выполнить
dotnet restoreвручную. Сначала исправьте все проблемы с каналом данных, а затем дайте агенту повторить попытку.
Агент создает код, который не компилируется
Причина: Код, созданный ИИ, может содержать ошибки, особенно в крайних случаях или при работе с нестандартными шаблонами API.
Solution:
- Агент автоматически обнаруживает ошибки компиляции. Если агент борется, предоставьте рекомендации или исправьте код вручную и сообщите агенту продолжить работу.
- Если агент борется с определенным исправлением после нескольких попыток, измените код вручную и сообщите агенту: "Исправлена ошибка компиляции в MyClass.cs, пометьте эту задачу завершенной".
- Агент узнает об исправлении вручную и применяет аналогичные шаблоны, когда эта проблема появится в другом месте.
Проблемы с Git
Замечание
Агент также работает с папками без Git. Если ваша рабочая область не является репозиторием Git, агент пропускает Git-операции (ветвление, фиксация) и применяет изменения непосредственно к вашим файлам. Без Git создайте резервную копию проекта вручную перед началом работы, чтобы при необходимости можно было вернуться.
Агент не может создать ветвь
Причина: Незафиксированные изменения в рабочем дереве, конфликт именования ветви или Git не инициализирован в рабочей области.
Solution:
- Зафиксируйте или сохраните несохраненные изменения перед началом работы над сценарием.
- Убедитесь, что Git инициализирована, выполнив команду
git statusв корневом каталоге рабочей области. - Если ветвь с предполагаемым именем агента уже существует, удалите существующую ветвь или попросите агента использовать другое имя ветви.
Отмена всех изменений агента
Причина: Обновление не прошло так, как планировалось, и вы хотите начать заново.
Solution:
- Вернитесь в исходную ветвь с помощью
git checkout main(или базовую ветвь). - Рабочая ветвь агента содержит все изменения, изолированные от основной ветви.
- Чтобы полностью удалить ветвь агента, выполните команду
git branch -D <agent-branch-name>. - Чтобы сохранить некоторые изменения, выполните cherry-pick конкретных коммитов с
git cherry-pick <commit-hash>.
Подсказка
Агент выполняет подробные фиксации для каждой задачи, чтобы вы могли выборочно сохранять изменения, которые успешно прошли.
Проблемы с производительностью
Эти проблемы связаны с длительностью обновления и длительностью оценки.
Агент работает медленно или требует много времени
Причина: Большие решения с множеством проектов, сложными графами зависимостей или многочисленными критическими изменениями естественно требуют больше времени.
Solution:
Для крупных решений (50+ проектов) рассмотрите возможность обновления в пакетах. Группировать связанные проекты и обновлять их вместе.
Оценка занимает много времени
Причина: Оценка анализирует зависимости каждого проекта, пакеты NuGet, целевые фреймворки и применимые критические изменения. Для крупных решений оценка, естественно, занимает больше времени.
Solution:
- Длительное время оценки является нормой для крупных решений. Никаких действий не требуется.
- Отслеживайте ход выполнения на панели Output (выберите AppModernizationExtension в раскрывающемся списке Visual Studio).
- Оценка выполняется только один раз в каждом сценарии. Последующие этапы используют кэшированные результаты.
Проблемы с настройкой
Эти проблемы связаны с пользовательскими навыками и файлами инструкций сценария.
Пользовательский навык не распознан
Причина: Файл навыка находится в неправильном расположении, отсутствуют или недопустимые метаданные, или имеет неправильный формат.
Solution:
- Убедитесь, что файл навыка находится в одном из поддерживаемых расположений:
-
.github/skills/(уровень репозитория, на уровне всей команды) -
.github/upgrades/skills/(уровень сценария) -
%UserProfile%/.copilot/skills/(уровень пользователя, персональный)
-
- Убедитесь, что метаданные навыка включают по крайней мере
nameиdescriptionполя. - Убедитесь, что
discoveryполе (если задано) является одним из следующих значений:lazy,preloadилиscenario. - Убедитесь, что навык
descriptionсоответствует типу задачи, к которому она будет применена. Агент использует сопоставление описания для выбора навыков.
Изменения в scenario-instructions.md не вступают в силу
Причина: Агент может не перечитывать файл в середине сеанса, или ваши изменения находятся в неправильном разделе.
Solution:
- Попросите агента "перезагрузить инструкции" или запустить новый сеанс чата, чтобы принудительно выполнить повторную запись.
- Убедитесь, что изменения находятся в правильных разделах файла:
- Параметры пользователя: Для общих настроек и ограничений.
- Ключевые решения: Для записи важных решений, принятых во время обновления.
- Пользовательские инструкции: Для определенных переопределения поведения.
- Убедитесь, что файл сохранен и в ожидаемом пути:
.github/upgrades/{scenarioId}/scenario-instructions.md
Получите помощь
Если что-то не работает должным образом:
- Попросите агента: Спросите : "Что пошло не так с последней задачей?" Агент часто может объяснить, что произошло, и предложить следующие шаги.
-
Просмотрите журнал выполнения: Откройте
execution-log.mdв.github/upgrades/{scenarioId}/. В журнале показана хронологическая запись того, что сделал агент, включая все ошибки, с которыми он столкнулся. - Создать проблему: Если вы нашли ошибку или агент часто завершается сбоем, создайте проблему в репозитории @modernize-dotnet GitHub.