Каков наилучший метод управления сборкой asp.net 3.5 для быстро меняющихся бизнес-приложений

Я работаю с двумя другими разработчиками в компании среднего размера, пишущей внутренние приложения на asp.net. У нас есть около 10 отдельных веб-приложений, около 5 библиотек классов и, вероятно, два десятка различных приложений командной строки и WinForms. Руководство ожидает, что мы сможем запускать приложение несколько раз в день, как того требуют их бизнес-правила.

В настоящее время мы (в основном) используем Microsoft.Net 1.1 и SourceSafe. Когда нам нужно развернуть веб-приложение, мы получаем последнюю версию SourceSafe, перестраиваем и затем копируем на рабочий веб-сервер. У нас также есть привычка создавать массивные файлы решений с 5-10 проектами, чтобы все было перестроено и скопировано в нашу «главную» папку bin, вместо того, чтобы открывать каждый проект один за другим для их восстановления.

Я знаю, что должен быть лучший способ сделать это, и с выходом Visual Studio 2010 и Microsoft.Net 4.0 в ближайшие месяцы, похоже, подходящее время для обновления нашей среды. Есть ли у Microsoft официальное мнение / технический документ о том, как все настроить? В прошлом моей самой большой проблемой была система, которая хорошо работала с тем, как быстро мы должны запускать код в производство.


person Donald Hughes    schedule 23.02.2010    source источник
comment
Все, что вы выберете, будет лучше, чем то, что у вас есть. Вы могли подбросить монетку.   -  person John Saunders    schedule 23.02.2010
comment
Массовое решение содержит 5-10 проектов? Мне жаль, что у меня не было этой проблемы. знак равно   -  person Craig    schedule 23.02.2010
comment
@John: Я знаю, что все остальное лучше, но мы застряли в трясине, в которой оказались, потому что не сделали правильный выбор с самого начала. @Craig: Я знаю, что 5-10 проектов кажутся маленькими, но это большие проекты (я думаю), в среднем около 100 классов и более 500 файлов каждый.   -  person Donald Hughes    schedule 23.02.2010
comment
@Donald: 500 файлов * 10 проектов - все еще довольно мало. Буду рад приветствовать вас в 21 веке. Ваша компания должна спланировать, как не использовать .NET 4.0 через десять лет.   -  person John Saunders    schedule 23.02.2010
comment
@John: Я думаю, что маленькое - это относительно. Я согласен быть достаточно гибким, чтобы оставаться в курсе. Но переход на .Net 4.0 был серьезным оправданием, поскольку 1.1 все еще работает, и для миграции всего кода asp.net 1.1 потребуются значительные усилия.   -  person Donald Hughes    schedule 24.02.2010
comment
@Donald: кроме тестирования, для миграции потребуется совсем немного времени. Какие области вы считаете трудными или требующими много времени? Что касается agile, .NET 1.1 около семи лет. Тот факт, что он хотя бы не перешел на .NET 2.0, можно было считать умирающим и почти обанкротившимся. Я рекомендую вам воспользоваться возможностью извлечь уроки из этой ошибки и решить, как сделать так, чтобы она не повторилась.   -  person John Saunders    schedule 24.02.2010
comment
Я попытался использовать мастер преобразования, но он не очень хорошо работал со страницами asp.net, создавая огромное количество ошибок в отчете. Библиотеки классов были в порядке. Я слышу вас громко и ясно. Моя проблема заключается в том, чтобы получить поддержку от других ребят во внедрении новых технологий, будь то .Net 2.0+, TDD, не-SourceSafe VSS или сервер непрерывной сборки.   -  person Donald Hughes    schedule 24.02.2010
comment
Я даже не знал, что существует мастер преобразования для чего-либо, кроме преобразования форматов файлов проекта. Вы должны задать еще один вопрос здесь, в SO, о конкретных ошибках, которые вы видите. У меня никогда не было проблем с этим обновлением сайта ASP.NET. Обратите внимание, OTOH, что любое второе обновление после .NET 1.1 до .NET 2.0 намного проще - они усвоили свои уроки.   -  person John Saunders    schedule 24.02.2010


Ответы (3)


См. «шаблоны и практики командной разработки с Visual Studio Team Foundation Server».

Прочтите все это. В нем есть вещи, о существовании которых вы, возможно, даже не подозревали.

person John Saunders    schedule 23.02.2010
comment
Это руководство было тем, что я искал, хотя я бы хотел, чтобы оно было менее ориентировано на командную систему. Сейчас мы планируем установить следующее: Build Runner: MSBuild; CI: TeamCity; Тестирование: xUnit; Издевательство: Moq; Покрытие кода: PartCover. - person Donald Hughes; 24.02.2010
comment
Удачи. Однако обратите внимание, что одним из преимуществ TFS перед отдельными продуктами является то, что все хранится в хранилище данных, из которого можно получить полезные отчеты. Многие из них встроены. Например, отчет «Показатели качества», который объединяет частоту успешных / неудачных сборок с показателями успешности / неудач модульных тестов, процентом покрытия кода и скоростью оттока кода. Это дает вам хороший график того, как эти индикаторы меняются с течением времени. - person John Saunders; 24.02.2010

Существует сервер сборки для .NET под названием CruiseControl.NET. Вы можете найти его полезным, так как его можно полностью автоматизировать.

person Broam    schedule 23.02.2010
comment
Обратите внимание: мой предыдущий работодатель использовал его, но я не участвовал в настройке или обслуживании сервера, поэтому мой ответ такой краткий. - person Broam; 23.02.2010
comment
+1 CruiseControl.NET отлично подходит для таких ситуаций. Я поддерживал несколько приложений, которым требовалось выпускать ежедневные обновления. они автоматизировали все. Переключите SVN и работайте в транке освобождение от веток. ты будешь благодарить себя - person used2could; 23.02.2010
comment
Должен признаться, я немного смущен тем, как CruiseControl работает в такой среде. Это кажется наиболее подходящим, когда вы создаете продукт с дискретными версиями, а не с аморфной каплей постоянно меняющегося кода. - person Donald Hughes; 23.02.2010
comment
Например: я вношу изменения в наше приложение CRM. Для внесения изменений требуется несколько изменений графического интерфейса, изменение кода программной части и изменение объекта доступа к данным в отдельной библиотеке классов объектов данных. Каков рекомендуемый процесс внесения этих изменений? Могу ли я открыть Visual Studio и работать с библиотекой классов как с независимым решением? Затем, когда я верну код, CruiseControl восстановит его? - person Donald Hughes; 23.02.2010
comment
@Donald: у вас, скорее всего, будет решение со всеми частями, над которыми вам нужно работать вместе - с графическим интерфейсом и библиотеками классов, а также с проектами модульных тестов. Вы должны внести все свои изменения, а затем отправить их. Затем CruiseControl (или TFS) соберет весь измененный код и запустит автоматические тесты. TFS можно даже настроить так, чтобы отклонить вашу отправку, если вы недавно не запускали модульные тесты и не добились их успеха. - person John Saunders; 23.02.2010
comment
Считается хорошим тоном иметь такие решения? Решение 1 состоит из проектов A, B и C. Решение 2 состоит из проектов D, B и C. И код всегда выкатывается из каталога сборки CruiseControl? - person Donald Hughes; 24.02.2010
comment
Что насчет TeamCity как альтернативы CruiseControl.Net? Бесплатная профессиональная версия, вероятно, подойдет всего 3 разработчикам. Кроме того, есть ли рекомендация по поводу того, какие инструменты TDD и Code Coverage лучше всего работают с Visual Studio 2008/2010? Желательно бесплатно, поскольку Team System кажется довольно дорогой. - person Donald Hughes; 24.02.2010