7

Вопрос заключается в конце - позвольте мне начать с постановки контекст:Хранение Windows SDK в исходном управлении?

Одна из проблем мы сталкиваемся на работе при использовании Visual Studio, чтобы убедиться, что все в команде использует ту же версию SDK.

Типичная проблема будет иметь кого-то использовать другую Direct X SDK версию, что приводит к различному поведению коды, или кто-то модернизирует к SDK более поздние платформы/Windows, для того, чтобы использовать некоторые новые API и имеющий код не работает на других программистах, если они все еще используют предыдущую версию.

Путь, который мы использовали для решения проблемы для другого промежуточного программного обеспечения, состоял в том, чтобы поместить весь набор библиотек, включить файлы, цепочки инструментов и т. Д. В нашу систему управления версиями, и наши проекты используют их так, чтобы никто должен установить что угодно. Нам также удалось сделать это с более ранней версией Direct X SDK, но мы всегда сталкивались с проблемами с SDK Windows/Platform из-за тесных связей между SDK и инструментальной цепочкой.

Поскольку мы теперь должны поддерживать как VS2010 и VS2012, и должны поддерживать с Windows XP на Windows 8 целей, мы должны поддерживать V100, V110 и v110_xp ИНСТРУМЕНТОВ.

Это означает, что нам нужны все связанные с ним компиляторы и соответствующие SDK, как на наших машинах разработчика, так и в системах сборки: это становится невероятно дорогостоящим для обслуживания, особенно учитывая, что случайные обновления окон и выпуски фреймов .net обычно имеют тенденцию к разрыву MSBuild.

Так что вопрос:

  • Можно ли иметь Visual Studio использовать не установленные наборы инструментов и SDK и вместо того, чтобы иметь его использовать то, что доступно в какой-нибудь папке из нормального VS мест установки?

  • Вопрос с бонусом: если это возможно, возможно ли это сделать, не изменяя локально установленный файл конфигурации на машине - то есть: все это в листах решений/проектов или свойств - поэтому, если мы изменим структуре в системе управления исходным кодом нам не нужно обновлять каждую отдельную машину?

Спасибо :)

+2

Я бы ручался за способ VM (build server). Альтернативно, призрачные установочные образы. (IMO, что вы описываете, в некотором роде, в мире UNIX, и, к сожалению, Microsoft слишком плохо подходит к этой картине) – sehe

+0

Да на оба вопроса, однако это скорее хак, чем тривиальная операция. Это то, что вы можете настроить на машине сборки. В любом случае вы должны развернуть это и перевести его в ветвь dev, когда будете готовы к использованию. – KMoraz

+0

Я согласен с тем, что вы должны попытаться создать стандартные виртуальные машины и заставить разработчиков использовать одну и ту же среду. Это строгий процесс, который каждый должен соблюдать, если кто-то не хочет сломать сборку и повредит кому-либо еще. Если кому-то нужно использовать новый SDK, создайте для него новый образ виртуальной машины и попросите зарегистрироваться в ветке изоляции. Как только время будет правильным, каждый должен обновиться до этого нового образа виртуальной машины. Если вы хорошо управляете, вам не нужно проверять SDK на исходный контроль, так как это не решение. –

ответ

0

Это звучит слишком сложно, учитывая, насколько сложными некоторые из этих установок инструментальных. Я бы решил эту проблему, инвестируя в некоторые сценарии PowerShell, которые смотрят на установленные инструменты и траектории инструмента и «полируют» установки. Было бы относительно легко проверить наличие установленных версий всего, включая исправления и обновления. Вы можете запускать эти ночные часы или как часть сборки. Кроме того, вы можете сравнивать аспекты различных установок, таких как версии инструментов, установленные в ящике разработчика с вашим сервером сборки.

Это даст вам 90% от стоимости на 10% от боли.

0

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

Смежные вопросы