ClickOnce, WPF, MSBuild и несколько окружений — I

Или сказ о том, как сделать публикацию приложений в один клик на разные окружения для тестирования разных версий приложений на WPF с помощью ClickOnce и TFS 2010.

На днях мне нужно было решить следующую, на мой взгляд, достаточно распространенную задачу, по размещению двух версий приложения. Одна версия QA – для тестирования текущих наработок, то, что реализуется каждый день: UI, логика, исправление мелких ошибок. Другая версия – Prod – для тестирования общих алгоритмов на реальных данных. В целом стандартная практика в мире разработки.

Решение этой задачи оказалось не столь стандартное и простое как я ожидал, для такой задачи. Но обо всем по порядку.

Диспозиция

В качестве исходных данных мы примем то, что у вас есть работоспособное приложение на WPF (для WinForm будет то же самое, но WPF более сложный случай), которое можно локально собрать в нескольких конфигурациях: Dev, QA(Cons), Prod.  Не важно, что именно у вас зависит от конфигурации, в общем случае, скорее всего это строки соединения с базой данных, оптимизация и логирование ошибок/действий пользователя.

Так же, как дополнительное условие, все конфигурации должны собираться на билд-сервере, в данном случае на TFS и при использовании MSBuild. То, что дальше описывается можно собирать локально, с помощью командной строки. Так что TFS – усложнение задачи, которое будем принимать во внимание.

И еще у вас успешно настроена на публикацию из VisualStudio с помощью ClickOnce хотя бы одна конфигурация приложения.

Еще раз, у нас есть:

  • WPF приложение
  • У приложения несколько рабочих конфигураций
  • Все конфигурации компилируются на билд-сервере (TFS)
  • Хотя бы одна конфигурация публикуется с помощью ClickOnce из VisualStudio

Проблема

В описанной системе все хорошо, все собирается на TFS, в разных конфигурациях. Т.е. я могу в любой момент получить рабочее приложение с любой конфигурацией. Однако распространение для пользователей идет только по линии QA. До определенного этапа разработки этого хватало. Теперь же надо опубликовать Prod, при этом на одном компьютере должны одновременно стоять как QA версия, так и Prod.
Проблем с физической публикацией не возникло. Т.е. на сервер складываются разные версии приложения, но при установке пользователю, одна версия затирает другую.

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

Надеюсь, что проблема ясна, но я более подробно покажу еще раз, как приходят к этой ситуации и как ее решить во всех подробностях.

Подробнее

Wiki

Небольшое вступление и пояснение к некоторым будущим записям из рубрики Процесс. С недавнего времени я начал работать в компании, где надо полностью поднять весь процесс разработки ПО. Заметки по ходу этого действа будут появляться чаще и порой без кода совсем. У меня просьба к читателям высказывать свое мнение и наработки, по освещаемым вопросам. Ну и я надеюсь, что в результате такой работы будет много интересного материала и пищи для размышления.

Еще из необходимого ПО я считаю надо ставить wiki. К сожалению, предыдущий опыт не был сильно удачен. До этого я пробовал ставить википедии с помощью WebPlatform, насчет самой платформы нареканий нет, но представленные на тот момент википедии удручали. Одна не смогла доставить MySQL, да и сам MySQL не особенно желанный гость на моей машине. Второй движок ScrewWiki – вполне оправдывает свое название. Нифига не работает, редактирование паршивое, оформление тоже. Было решено отказаться от такого счастья. Поиск других движков не выглядел радужной перспективой и на какой-то момент я бросил это дело.

На днях снова заглянул в Web Platform Installer и обнаружил там новый движок для википедии, блогов, рассылок и чего-то в духе твиттера. Называется Incentive. До 10 зарегистрированных пользователей бесплатно.

Подробнее

Правила оформления кода C# v1.0

Волею судеб я попал в «девственные леса» организации, где не было разработок на C# и надо поставить все процессы с нуля. Систему контроля версий, процесс работы, сбор требований и учет работы. Правила оформления кода. Как раз первую версию такого документа я представляю на ваш суд. Я руководствуюсь исключительно своими предпочтениями в оформлении кода, которые позволяют мне быстро и эффективно ориентироваться по коду приложения.

Здесь отражено только форматирование кода, нет указаний на code smell или какие-либо еще недочеты в самом коде.

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

Краткое содержание:

  • Переменные
  • Использование VAR
  • Именование методов
  • Обрамление кода
  • Комментарии
  • Оформление блоков кода
  • Свойства
  • Логические операции
  • Организация класса

Подробнее