Skip navigation links
Блог лаборатории
Eugene Nourminsky
Dmitry Grechka
MSDN AA
Проекты
Digital Workbook
Dynamic Data Display
Live@EDU на ВМК
Космические проекты
Мероприятия
Курсы
Семинар «Технологии разработки и анализа программ»
О лаборатории
Обратная связь
Categories
Archive
Тестирование Azure-сервисов в TFS Build
Categories: Visual Studio, Windows Server 2008, SQL Server, TFS

Сейчас явно прослеживается тренд на облачные вычисления. Не обошел он и нас стороной, и перед нами встала задача - разместить некоторые разрабатываемые службы в облаке. Естественно, перед публикакией, пусть даже и development, необходимо проверять результаты автоматических сборок.

0. На билд-машины был установлен VSCloudService из набора Azure SDK. Внутри каталога Windows Azure SDK находятся следущие файлы:

csrun.exe – непосредственно запускает эмулятор

\devstore\DSInit.exe – инициализирует локальное хранилище и выставляет права доступа для базы.

Для отработки тестов, надо предварительно инициализировать хранилище в локальном SQL Server на сборочной машине, а затем запустить Storage Emulator. Во многих форумах предлагается запускать их в методе AssemblyInitialize. Мы так и сделали.

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

System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:10000

1. Естественно, начали грешить на закрытый порт. Открыли порт 10000 (именно он используется Storage Emulator’ом) на сборочных серверах для внутризонного подключения. Ошибки заменились другими:

Microsoft.WindowsAzure.StorageClient.StorageServerException: Server encountered an internal error. Please try again after some time. ---> System.Net.WebException: The remote server returned an error: (500)

Ну дела.

2. Поскольку удаленная отладка в данной ситуации – дело не самое простое, было решено проверить работоспособность компонентов отдельно. Оказалось, что добрые разработчики утилиты DSInit зачем-то сделали приложение оконным, что делает его запуст билдом невозможным, так как TFS Build работает в режиме сервиса, и UI-консоль ему не доступна.

Запускаем DSInit вручную для билд-аккаунта. Вот тут и выясняется основная ошибка – инициализатору не хватает прав сборочного аккаунта для выполнения операций настройки. Даем права sysadmin на SQL Server’е сборочной машины, запускаем – работает.

3. Самое замечательное. Правка Workflow-шаблона сборки проекта для запуска эмулятора.

В начале последовательности Try блока “Compile and Test” добавляем InvokeProcess параметрами:

FileName - "C:\Program Files\Windows Azure SDK\v1.3\bin\csrun.exe"

Arguments – “/devstore:start”

Сразу после рекомендуется поставить Delay в 5 секунд, чтобы эмулятор успел запуститься и выполнить все приготовления.

В последовательности Finally блока “Compile and Test” включаем тот же InvokeProcess, только с аргументом “/devstore:shutdown” для останова эмулятора.

Чекиним измененный BuildTemplate и теперь оно работает ;)

DevEnv VS MSBuild
Categories: TFS, Visual Studio

Продолжаю цикл постов про совместимость.

Я думаю, те, кто не первый год работает с Visual Studio знаю о том, что процессы сборки проектов из IDE и через утилиту msbuild при всей внешней схожести весьма различны.

В первую очередь это касается дополнительных надстроек Visual Studio – не всегда все работает корректно в обоих средах. И тот факт, что solution у вас собирается под Visual Studiо вовсе не гарантирует корректную сборку под MSBuild.

В частности, с этим сталкиваются пользователи Team Foundation Server. В TFS есть специальный компонент Team Foundation Build, который отвечает за автоматическую сборку исходников проекта на сервере. Выполняется он под MSBuild, который собирает проекты руководствуесь лишь ограниченным и достаточно простым набором правил.

DevEnv (Visual Studio) же собирает проекты в последовательности, определенной на нескольких источниках, таких как явные зависимости проектов и прописанные зависимости внутри файла solution.

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

Проблемы была локализована отнюдь не сразу. Впрочем, решение все-таки было найдено – в sln-файле по какой-то нелепой причине не были прописаны те самые зависимости проектов. Зависимости прописываются сразу после объявления проекта вверху файла:

Project("{SOMEGUID}") = "SampleProject", "SampleProject", "{SAMPLEPROJECTGUID}"

ProjectSection(ProjectDependencies) = postProject

{DEPENDENCYPROJECTGUID} = {DEPENDENCYPROJECTGUID}

{DEPENDENCYPROJECTGUID2} = {DEPENDENCYPROJECTGUID2}

EndProjectSection

Где DEPENDENCYPROJECTGUID и DEPENDENCYPROJECTGUID2 – GUID’ы проектов, от которых зависит проект SampleProject. После прописывания этих строк вручную, все стало собираться вновь без ошибок.

Надеюсь, вы потратили меньше времени на поиск решения, чем я ;)

Team Build 2010 vs Silverlight 3
Categories: Silverlight, TFS
Если вдруг для серверной сборки проектов вы используете 64-битную машину, то при попытке собрать любое Silverlight-приложение у вас вылезет ошибка:
 
C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v3.0\Microsoft.Silverlight.Common.targets (101): The Silverlight 3 SDK is not installed.
 
Прямо скажем, малоинформативно, особенно учитывая тот факт, что Silverlight 3 SDK у вас наверняка есть (при наличии установленной Visual Studio 2010 на билд-сервере) и никакая переустановка/восстановление не поможет.
 
Ларчик открывается просто: по умолчанию на 64-битной машине платформа msbuild также x64, что совершенно несовместимо со сборкой Silverlight-проектов. Поэтому для корректного выполнения билда необходимо включить один маленький параметр в Build Definition - Process - 3. Advanced - MSBuild Platform = X86 как показано на картинке:
 
Здесь картинка
Team Build 2010: New
Categories: TFS, Visual Studio

Microsoft, как и все другие компании, старается совершенствовать свои продукты от версии к версии. Я очень часто работаю с Visual Studio, и считаю 2010 версию самой удобной на текущей момент средой разработки.

Для меня очень важно, чтобы проекты, разработка которых ведется как днями, так и ночами, всегда собирались. Чтобы всегда была работоспособная версия, которую можно продемонстрировать заказчику, а сам код проходил все необходимые тесты. В комплекте Team System есть компонент Team Foundation Build, 2008 версия которого была полностью построена на MSBuild - все действия и управление последовательностями и зависимостями выстраивались в набор Target-файлов, зачастую слабо документированных и уязвимых к ошибкам.

В версии 2010 Team Build'ом руководит уже Windows Workflow, правила и описания для которого хранятся в файле шаблона процесса - по умолчанию в корне дерева исходных кодов проекта в папке BuildProcessTemplates. Если открыть любой из XAML-файлов из этой директории, откроется редактор рабочих процессов:

И здесь вы вольны менять систему так, как вам заблагорассудится.

Это не попало в наш с Гавриловым курс по разработке программных систем в этом году, но, думаю, в следующем я включу полноценную лекцию по практикам Software Configuration Management и подробно рассмотрю вопросы по автоматизации построения различных кофигураций.

Кстати, если вы пользовались в Team Build 2008 параметром ConfigurationFolderRecursionType = full в конфигурационном файле сборочного сервера (это необходимо для того, чтобы при загрузке файлов описаний сервер загружал и все поддиректории), то теперь это прописывается прямо в Build Definition:

(Вкладка Process –> Build Process Paremeters –> 3. Advanced: Agent Settings)

Кто бы мог подумать ;)

Объявлена дата релиза VS2010
Categories: Visual Studio

DevTen, как ее называют внутри Майкрософт (по порядковому номеру версии - 10), будет официально "запущена" 12 апреля 2010 года (то есть уже меньше, чем через три месяца). Пока проходит обкатку Release Candidate.

Это значит, что в мае этого года факультет ждет как минимум еще одно глобальное мероприятие :)

А как много вкусного обещают в "десятке"! Мне, как человеку завязанному и на разработку, и на IT Pro-тематики, крайне интересны возможности командной разработки с помощью Team Foundation Server 2010, а уже во второй бете были реализованы те функции, которых так не хватало в девятой версии - например:

  • разбивка проектов на коллекции с возможностью быстрой миграции с сервера на сервер
  • распределение нагрузки
  • управление лабораторией тестирования
  • практически безграничные возможности по настройке автоматической сборки
  • Visual C++ проекты собираются с помощью MSBuild - последняя теперь является по настоящему универсальной средой
  • официально добавлен еще один язык программирования: F#

Никита и Битва Титанов
Categories: Lab and Fun

Вот такие рисунки образуются во время теологических споров – о дальнейшем развитии одного из проектов лаборатории:

(нажмите на картинку для увеличения)

По секрету всему свету
Categories: none
Подготовка к запуску Windows 7 идет полным ходом.
 
Освобождайте 20 ноября, у вас будет повод отдохнуть и узнать тонны полезной информации!
 
Кстати, если у вас есть пожелания по поводу запуска Win7 в частности, и мероприятий Microsoft в целом, можете прислать их нам. Контактная информация - тут.
 
Win 7 Logo
 
Stay tuned!
Установка Silverlight 3 Tools в Offline-режиме
Categories: Visual Studio, Silverlight

Если вдруг у вас возникло желание установить Silverlight 3 Tools на компьютер без интернета, то обычным переносом инсталлятора на машину и его запуском вы не отделаетесь.

Дело в том, что, как и большинство плагинов к VS, S3Tools устанавливается с помощью утилиты SPInstaller. Она достаточно простая в плане входных параметров, но, в то же время, достаточно сложная изнутри. Помимо этого, добрые создатели установочного пакета S3Tools обязали инсталлятор обязательно связываться с сервером при установке содержимого, проверять версию и чексуммы. Угадайте, во что это выливается при установке в оффлайн-режиме:

Правильно, ни во что хорошее. Причем, такое поведение инсталлятора не меняеся с первой версии. Глупость.

Например, у нас в лаборатории есть несколько билд-серверов, на которых необходимо поддерживать актуальный софт для автоматической сборки проектов. Сеть, в которой работают билд-сервера, “стерильна” и закрыта для доступа, а все результаты сборки выкладываются на промежуточный (staging) сервер. Здесь приходится ухищряться, но обычно, как и в данном случае, работает нижеописанный метод.

Если взглянуть на файл инсталлятора вооруженным взглядом, то все содержимое окажется как на ладони:

Из всего этого великолепия нам понадобятся либо комплект файлов для Visual Studio 2008:

  1. VS90SP1-KB967143-enu.msp
  2. silverlight_sdk.msi
  3. VS_SilverlightTools_Setup.exe

…либо комплект для Visual Web Developer 2008:

  1. VS90SP1-KB967144-enu.msp
  2. silverlight_sdk.msi
  3. VWDX_SilverlightTools_Setup.exe

Экспортируйте из инсталлятора эти файлы. Установив набор, соответствующий вашей системе разработки, и вы получите необходимый и достаточный набор для разработки Silverlight 3 приложений.

Да, и вам все еще понадобится Silverlight 3 Developer Runtime ;-)

Стажировка в Microsoft Research
Categories: Internship

Каждый мечтает о хорошей карьере. Но что делать, когда хочется ее совмещать с исследовательской деятельностью?

Ответ: стажировка и работа в MSR. Уже второй по счету сотрудник лаборатории, автор леденящего душу высказывания “птицы летят на нерест”, отправляется в Кэмбридж (Великобритания) гастарбайтером интерном. Его ждут интересные научные исследования, хороший соцпакет и высокая зарплата. Пожелаем ему удачи!

Завидно?

Попробуйте сами: Internship Opportunities @ MSR и England Lab Internship Program.

Windows 7 на русском…
Categories: MSDNAA

Доступна в MSDN, а соответственно, и в ELMS. Качайте :)

Next