Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Инструмент "Упаковщик решений" можно использовать с любой системой управления версиями. После того как ZIP-файл решения будет извлечен в папку, добавьте и отправьте файлы в систему управления версиями. Затем эти файлы можно синхронизировать на другом компьютере, где они могут быть упакованы в новый идентичный ZIP-файл решения.
Важным аспектом при использовании извлеченных файлов компонентов в системе управлении версиями является то, что добавление всех файлов в систему управления версиями может вызвать ненужное дублирование. См. Справочник по файлам компонентов решений, чтобы увидеть, какие файлы создаются для каждого типа компонента, и какие файлы рекомендуется использовать в системе управления версиями.
Поскольку для решения необходимы дополнительные настройки и изменения, разработчики должны редактировать или настраивать компоненты с помощью существующих средств, снова экспортировать, чтобы создать ZIP-файл, и извлечь сжатый файл решения в ту же папку.
Important
За исключением разделов, описанных в статье Когда редактировать файл настроек, ручное редактирование извлеченных файлов компонентов и ZIP-файлов не поддерживается.
Когда средство "Упаковщик решений" извлекает файлы компонентов, оно не будет перезаписывать существующие файлы компонентов с одинаковыми именами, если содержимое файлов идентично. Кроме того, инструмент учитывает атрибут "только для чтения" в файлах компонентов, создавая в окне консоли предупреждение о том, что определенные файлы не были записаны. Эта защита позволяет пользователю извлекать из системы управления версиями минимальный набор файлов, которые меняются. Параметр /clobber может использоваться для принудительного переопределения прав и записи или удаления файлов, доступных только для чтения. Параметр /allowWrite может использоваться для оценки того, какое влияние оказывает операция извлечения, фактически не вызывая запись или удаление каких-либо файлов. Использование параметра /allowWrite с подробным ведением журнала эффективно.
После завершения операции извлечения с минимальным набором файлов, извлеченных из системы контроля версий, разработчик может отправить измененные файлы обратно в систему управления версиями, как это делается с любым другим типом исходного файла.
Форматы файлов системы управления версиями
Инструмент Solution Packager поддерживает два формата файлов выгруженных компонентов. Выбор правильного формата заранее позволяет избежать необходимости переделывать структуру репозитория позже.
| ФОРМАТ XML (устаревшая версия) | Формат контроля версий YAML | |
|---|---|---|
| Манифест решения | Other\Solution.xml + Other\Customizations.xml |
solutions/<name>/solution.yml и поддержка файлов YAML |
| Читаемость | Объёмный XML | Компактный YAML — проще читать и просматривать |
| Качество диффа в Git | Большие диффы XML | Минимальные, сфокусированные различия |
| Репозиторий с несколькими решениями | Не поддерживаются | Поддерживается— несколько решений совместно используют одну папку |
| Canvas Apps (.msapp) | Не поддерживаются | Поддерживается |
| Современные потоки | Не поддерживаются | Поддерживается |
| Нативная интеграция с Git | Не используется | Всегда используется— интеграция Git всегда записывает YAML |
Когда используется формат YAML: Для всех новых проектов и при использовании собственной интеграции Dataverse Git. Формат YAML обладает обратной совместимостью с будущими изменениями и создает более чистый журнал изменений.
Когда используется xml-формат: Только при работе с существующими репозиториями, которые уже используют формат XML или при использовании устаревших средств, которые не поддерживают YAML.
Замечание
При совершении коммита решений с помощью встроенной интеграции Git в Power Apps они всегда хранятся в формате YAML для управления версиями. Чтобы вручную упаковать или распаковывать этот источник с помощью SolutionPackager или pac solution packпапка должна соответствовать структуре папок YAML. Дополнительные сведения: инструмент SolutionPackager — форматы файлов для системы управления версиями
Коллективная разработка
Когда несколько разработчиков работают над одним и тем же компонентом решения, может возникнуть конфликт, когда изменения от двух разработчиков приводят к изменениям в одном файле. Такие случаи сводятся к минимуму путем разделения каждого отдельно редактируемого компонента или подкомпонента в отдельный файл. Рассмотрим следующий пример.
Разработчики A и B оба работают над одним и тем же решением.
На независимых компьютерах они получают последние версии исходных файлов решения из системы управления версиями, собирают пакет и импортируют неуправляемое решение в виде файла .zip в независимые организации Microsoft Dataverse.
Разработчик A настраивает системное представление "Активные контакты" и основную форму для сущности Contact.
Разработчик B настраивает основную форму для сущности "Счет" и изменяет "Представление поиска контакта".
Оба разработчика экспортируют ZIP-файл неуправляемого решения и извлекают его.
Разработчику A потребуется взять в работу один файл для основной формы "Контакт" и один файл для представления "Активные контакты".
Разработчику B необходимо получить один файл для основной формы "Счёт" и один файл для "поискового представления контактов".
Оба разработчика могут отправлять файлы в любом порядке, так как их соответствующие изменения коснулись разных файлов.
После завершения обеих отправок они могут повторить шаг № 2, затем продолжить вносить дальнейшие изменения в свои независимые организации. У каждого из них есть оба набора изменений, без перезаписи их собственной работы.
Предыдущий пример работает только при наличии изменений в отдельных файлах. Неизбежны случаи, когда независимые настройки требуют изменений в одном файле. На основе приведенного ранее примера следует учитывать, что разработчик B настраивал представление "Активные контакты" в то время как разработчик А также настраивал его. В этом новом примере порядок событий становится важным. Правильный процесс выхода из этого затруднительного положения, описанный полностью, описан здесь.
Разработчики A и B оба работают над одним и тем же решением.
На независимых компьютерах они оба получают новейшие исходные файлы решения из системы контроля версий, упаковывают их и импортируют ZIP-файл неуправляемого решения в отдельные организации.
Разработчик A настраивает системное представление "Активные контакты" и основную форму таблицы Контактов.
Разработчик B настраивает основную форму для таблицы "Контрагенты" и изменяет представление "Активные контакты".
Оба разработчика экспортируют ZIP-файл неуправляемого решения и извлекают его.
Разработчику A потребуется взять в работу один файл для основной формы "Контакт" и один файл для представления "Активные контакты".
Разработчик B должен извлечь один файл для основной формы учетной записи и один файл для представления "Активные контакты".
Разработчик А готов первым.
Прежде чем разработчик А отправляет файлы в систему управления версиями, он должен получить последние исходные файлы, чтобы перед возвратом убедиться, что не будет конфликтов с изменениями.
Там нет никаких конфликтов, поэтому разработчик А может отправлять.
Разработчик B готов следующим после разработчика А.
Прежде чем разработчик B отправит свои изменения, он должен получить последние версии, чтобы убедиться, что не будет конфликтов с предыдущими изменениями.
Существует конфликт, так как файл для «Активные контакты» был изменен после того, как разработчик B в последний раз получил последние версии источников.
Разработчик B должен урегулировать конфликт. Возможно, что возможности используемой системы управления версиями могут помочь этому процессу; в противном случае все следующие варианты являются возможными.
Разработчик B через журнал системы управления версиями, если таковой имеется, может видеть, что разработчик A внес предыдущее изменение. Через прямое общение они могут обсудить каждое изменение. Затем разработчику B нужно всего лишь обновить организацию с согласованным решением. Затем разработчик B экспортирует, извлекает и перезаписывает конфликтующий файл и отправляет.
Разрешить системе контроля версий перезаписать локальный файл. Разработчик B упаковывает решение и импортирует его в свою организацию, затем оценивает состояние представления и повторно настраивает его по мере необходимости. Затем разработчик В может экспортировать, извлечь и перезаписать конфликтующий файл.
Если предыдущее изменение может быть сочтено ненужным, разработчик B разрешает своей копии файла перезаписать версию в системе управления версиями и отправляет ее.
Независимо от того, выполняется ли работа в общей среде или в независимых средах, разработка рабочей группой решений в Dataverse требуют, чтобы те, кто активно работает над общим решением, были осведомлены о работе других. Инструмент "Упаковщик решений" не полностью устраняет эту необходимость, но позволяет легко объединять неконфликтующие изменения на уровне системы управления версиями и проактивно выделяет краткие компоненты, в которых возникли конфликты.
Следующие разделы представляют собой общие процессы для эффективного использования инструмента "Упаковщик решений" в системе управления версиями при разработке с рабочими группами. Они работают в равной степени с независимыми средами или совместно используемыми средами разработки, хотя в совместно используемых средах экспорт и извлечение, естественно, будут включать все изменения, присутствующие в решении, а не только изменения, сделанные разработчиком, выполняющим экспорт. Аналогично, при импорте ZIP-файла решения возникает естественное поведение для перезаписи всех компонентов.
Создание решения
Эта процедура идентифицирует типичные шаги, используемые при первом создании решения.
В чистой среде с Dataverse создайте решение, а затем добавьте или создайте компоненты по мере необходимости.
Когда вы будете готовы зарегистрироваться, сделайте следующее.
Экспортируйте неуправляемое решение.
С помощью инструмента "Упаковщик решений" извлеките решение в файлы компонентов.
Из этих извлеченных файлов компонентов добавьте необходимые файлы в систему контроля версий.
Отправьте эти изменения в систему контроля версий.
Изменение решения
Следующая процедура идентифицирует типичные шаги, используемые при изменении существующего решения.
Синхронизируйте или получите новейшие исходные файлы компонентов решения.
С помощью инструмента "Упаковщик решений" упакуйте файлы компонентов в ZIP-файл неуправляемого решения.
Импортируйте файл неуправляемого решения в среду.
Настройте и отредактируйте решение по мере необходимости.
Когда вы будете готовы зафиксировать изменения в системе контроля версий, сделайте следующее.
Экспортируйте неуправляемое решение.
С помощью инструмента "Упаковщик решений" извлеките экспортированное решение в файлы компонентов.
Синхронизируйте или получите последние исходные файлы из системы контроля версий.
Согласуйте, если какие-либо конфликты существуют.
Отправьте изменения в систему контроля версий.
Шаги 2 и 3 должны быть выполнены до того, как в организации разработки будут выполнены дальнейшие настройки. На шаге 5 шаг b должен быть завершен до шага c.
См. также
Справочник по файлам компонентов решения (SolutionPackager)
Средство SolutionPackager
Форматы файлов системы контроля версий