Как мне получить последнюю версию решения Visual Studio из командной строки?

StackOverflow https://stackoverflow.com/questions/34204

Вопрос

Как мне получить последнюю версию моего решения рекурсивно, как это делается в контекстном меню обозревателя решений Visual Studio?Я хочу сделать это из командной строки или с помощью макроса.Я пытаюсь автоматизировать часть своей повседневной рутины, используя набор пакетных файлов.Я уверен, что многие разработчики хотели бы иметь что-то подобное.

tf get получает содержимое папки только рекурсивно (не решение).Он не рассматривает зависимости проекта и так далее.Это не сработает.

Это было полезно?

Решение

TFS имеет .Net SDK это позволяет вам создавать свои собственные пользовательские программы, которые взаимодействуют с TFS-сервером. Вы можете написать небольшую программу, которая выполняет нужную вам задачу:

TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer("MyServer");
VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));

WorkSpace[] myWorkSpaces = vcs.QueryWorkSpaces("MyWorkSpaceName", "MyLoginName", "MyComputer");

myWorkSpaces[0].Get(VersionSpec.Latest, GetOptions.GetAll);

Другие советы

Я согласен с тем, что Solution Explorer будет "по своему замыслу" пропустите все эти объекты, но только если вы не включили их в качестве элементов решения, которые, я полагаю, вы должны включить в свои решения, чтобы новичок мог открыть решение, выполнить команду "Получить последнюю версию" и узнать у них есть все зависимости, необходимые для этого решения, и им не нужно учиться делать это с помощью инструмента командной строки или использовать Source Control Explorer, если они этого не хотят.

Включение всех некодовых зависимостей в качестве элементов решения (мы организуем папки решений, используя ту же структуру папок, что и их папки управления исходным кодом), уменьшает " voodoo " знания, необходимые для открытия и компиляции решения для новых разработчиков проекта.

Было бы хорошо, если бы вы могли связать целые деревья папок с папкой решения в решении VS.

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

Начать в главном каталоге C: \ Project \ SupportingProjects

FOR /D %%G IN ("*") DO ECHO ..from....%%G && tf get C:\Projects\SupportingProjects\%%G 

::Get the latest for the Main project
tf get C:\Projects\MainProject /recursive 

В моем случае папка MainProject содержит файл решения и файл проекта.

Я нашел это легко и просто.

Подробнее о команде FOR: http://ss64.com/nt/for_d.html

Ну ... похоже, у тебя есть три варианта.

<Ол>
  • В своем пакетном файле введите tf get для каждой ветви каталога, которую вы хотите.

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

  • Используйте визуальный способ щелкнуть правой кнопкой мыши на загруженном проекте и ввести команду get.

  • Единственный раз, когда это действительно известно о решении, это когда проект загружается в IDE; или когда он загружен серверами сборки.

    Я знаю, что вы упомянули командные файлы, но позвольте мне высказать вам кое-что еще.

    Я предполагаю, что вы используете версию TFS 2005 года. 2008 имеет все встроенные средства планирования.

    Однако вы также можете использовать CruiseControl.net делать запланированные сборки для вас. Я использовал оба TFS 2008 и CruiseControl, и они оба, кажется, работают очень хорошо.

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

    http://www.codeproject.com/KB/install/ExtractAndBuild.aspx

    Не делай этого.VS далеко не так умен, как вы думаете.(О чем свидетельствуют таинственные и бесполезные проверки, с которыми сталкивались все на протяжении более чем 3 продуктовых циклов, включая вас и меня.Это не признак надежной системы!)

    То, что вы описываете, работает только для ссылок от проекта к проекту.Выполнение операций управления версиями из обозревателя решений "по замыслу" не приведет к:

    • ссылки на проекты для сборки
    • видео, звук, PDF-файлы, любые другие типы носителей, которые VS не поддерживает, но могут играть важную роль в продукте
    • MSBuild *.нацелен на файлы, на которые есть ссылки в ваших проектах
    • любые файлы любого типа, на которые ссылаются пользовательские целевые объекты
    • любые сторонние исполняемые файлы, требуемые в процессе сборки
    • и т.д.

    Просто скажи НЕТ к неполной синхронизации.На этом пути нас ждут только головные боли.

    Запустите "tf get" без области видимости пути из командной строки или щелкните правой кнопкой мыши -> Получить из корневого узла $/ в проводнике управления версиями.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top