Как мне получить последнюю версию решения Visual Studio из командной строки?
-
09-06-2019 - |
Вопрос
Как мне получить последнюю версию моего решения рекурсивно, как это делается в контекстном меню обозревателя решений 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" без области видимости пути из командной строки или щелкните правой кнопкой мыши -> Получить из корневого узла $/ в проводнике управления версиями.