Визуальная студия филиалов - PullRequest
1 голос
/ 27 декабря 2011

В нашей компании мы разрабатываем обычное приложение ASP.Net. Теперь нам нужно перенести приложение в облачное приложение, которое будет работать под Windows Azure. Итак, у нас будет две версии приложения

Нормальная установка на IIS Работает под Windows Azure У меня вопрос, как управлять ветками TFS. Должен ли я создать две ветки TFS foreach версии и каждый раз вносить изменения или есть альтернативный способ решения этой проблемы?

Заранее благодарю за помощь.

Ответы [ 2 ]

3 голосов
/ 27 декабря 2011

Мы выполнили один из таких проектов, где две версии приложения (обычное развертывание IIS и Azure) должны поддерживаться параллельно.Хотя между этими двумя версиями были существенные различия, мы использовали одну единую базу кода.Это сработало довольно хорошо, я думаю, у нас было бы больше проблем, если бы мы решили пойти с филиалами.

Несколько советов, облегчающих использование единой базы кода в устаревших и Azure развертываниях:

1: Различия в поведении в коде легко устранить с помощью динамическогоcheck

if (RoleEnvironment.IsAvailable)  
{  
   // Azure specific code  
}
else 
{
    // normal IIS code
}

Любые различия в пользовательском интерфейсе могут быть сделаны таким образом, скрывая / скрывая элементы со страницы.

2: Создайте отдельные конфигурации проекта и решения для) Развертывание производства IIS, b) Отладка IIS, c) Производство Azure и d) DevFabric.Используйте преобразования web.config, чтобы обойти любые различия в web.config.

3: Для отладки под DevFabric используется базовая версия (т.е. не преобразованная версия) файла web.config.Я обнаружил, что проще сделать ваш базовый web.config неизменным для среды DevFabric (т.е. преобразование, которое вы создадите для DevFabric, будет пустым).Это облегчает отладку под DevFabric.Побочным эффектом является невозможность отладки в Callipso.В качестве обходного пути для проблемы Callipso настройте обычный IIS на своем устройстве разработчика и используйте WebDeploy для публикации вашего пакета, созданного с использованием конфигурации отладки IIS, в локальный экземпляр IIS.

2 голосов
/ 27 декабря 2011

Если различия между ветвями невелики, рассмотрите возможность использования условной компиляции для переключения между разными платформами - это устраняет необходимость ветвления и позволяет легко увидеть, когда вы работаете с частями кода, которые разветвлены.Точно так же вы можете использовать абстрактные классы с конкретной реализацией для каждой платформы, что является более чистым подходом, чем использование #if для множества небольших кусков кода.

В случае ветвления я бы использовал один из двух подходовЕсли различия изолированы, возможно, стоит рассмотреть возможность рефакторинга кода, чтобы собрать различия в небольшую область кодовой базы, и просто разветвлять этот бит.Или вставьте папку корневого уровня и разветвите ее так, чтобы абсолютно все было разветвленным.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...