13

Я хотел бы синхронизировать проект VC++ 2010 с VC++ 2008. Возможно ли это? В принципе, если я добавляю/удаляю/переименовываю файл в проект в VS2010, я бы хотел, чтобы он был добавлен/удален/переименован в соответствующий проект VS2008. Синхронизация параметров проекта также была бы удивительной, но не необходимой. Мне также не нужна синхронизация на уровне решения.Разрабатывать бесшовно в VC++ 2010 и VC++ 2008 на той же работе?

Редактировать: Мне было предложено «объединить» файлы проекта при регистрации или построить время со сценарием или инструментом. К сожалению, формат файла проекта VC++ изменился с VS2008 на VS2010 и не имеет ничего общего. Итак, мой вопрос больше похож: Есть ли инструмент, способный слияния/конвертации между файлами проекта vc9 и vc10? Я могу написать свой собственный инструмент, если нет другого способа решить эту проблему.

ответ

6

В моей компании у нас была такая же проблема, и мы решили использовать CMake.

По крайней мере, попробуйте по одному из ваших проектов, это идеальное решение для вашей проблемы.

Это позволяет описывать наши проекты с помощью простого синтаксиса в текстовых файлах, а затем CMake генерирует проекты VS2005, VS2008 и VS2010 из тех же файлов.
Таким образом, только файлы Cmake изменяются, и все проекты обновляются одновременно.

Короче CMake является:
1. чистый
2. описательный
3. родной
4. безопасная

Потому что:
1. Все варианты и конфигурации могут быть считаны в файлы, а не во многих панелях свойств.
2. Грамматика и синтаксис CMake легко читаются.
3. Все сгенерированные проекты являются полными и независимыми от CMake.
4. Вы можете использовать диспетчер управления версиями в файлах CMake.

У нас было несколько решений по 50 проектам или 20 проектам, и это была большая работа, и одна из причин, по которой мы использовали CMake, заключалась в том, что нам нужно было работать с Xcode на Mac в некоторых библиотеках, проекты которых теперь распространены для VS и Xcode.
Но это стоило бы даже для разных версий VS.

+0

Это на самом деле то, что я settled для. Благодарю. – KeatsPeeks

1

Вы можете поддерживать эти файлы решений или проектов отдельно. если вы напишете свое дополнение, пожалуйста, дайте мне знать!

2

Управление источником помогает здесь. Я сделал это раньше с предыдущими версиями, создав обновленную ветку (VS2010) и объединив изменения между ней и магистралью (VS2008). Хотя, конечно, не бесшовный, он работает.

Я не знаю, изменится ли проект в VS2010, сделав его лучше или хуже, чем раньше!

+0

Этот проект контролируется источником TFS, поэтому меня это очень интересует. Но я не понимаю, как можно объединить изменения между проектом .vcproj (2008) и .vcxproj (VC++ 2010). Как я могу это достичь? – KeatsPeeks

+0

Вы бы объединили изменения между ними так же, как и для любых других файлов под TFS. – GraemeF

1

У меня нет 2010 установленного на работе, поэтому я собираюсь в основном из памяти здесь. Очень мало было изменений в схеме файла проекта с 2005 по 2008 год до 2010 года. По большей части я просто использую инструмент сравнения текста, такой как WinDiff или BeyondCompare, чтобы выделить изменения и скопировать их из одного файла в другой. Я не играл ни с одним из типов веб-проектов, но я предполагаю, что по большей части будет работать тот же метод. С их основной схемы XML вы также можете использовать инструмент сопоставления XML для выполнения той же работы.

Я заметил, когда я преобразовал проект с открытым исходным кодом, который 2010 действительно не понравился настройкам проекта ClickOnce. Он преобразуется отлично, но попросит меня преобразовать снова каждый последующий раз, когда я открыл проект. Мне пришлось полностью удалить информацию ClickOnce из файла проекта, чтобы остановить ее.

EDIT: Мой опыт в основном основан на схеме проекта C#, которая со временем не сильно изменилась. Как отметил TheSamFrom1984, в схеме C++ есть некоторые большие изменения, которые еще не попали в MSDN documentation on version 10.

+2

К сожалению, файлы проекта VC10 и VC9 полностью отличаются. – KeatsPeeks

+0

У меня не было возможности напрямую работать с любыми файлами проекта VC++ в последнее время, но схемы XSD, опубликованные MS, не указывают на изменение структуры. Где различия, которые вы видите? –

+1

Например, файлы перечислены в в vc9 и in vc10. Разница показывает только одну общую линию: первую. – KeatsPeeks

6

Проект Gallio OSS построен с использованием VS2010, в то время как большинство участников по-прежнему используют VS2008. Чтобы файлы *.csproj синхронизировались с файлами *.vs2010.csproj, мы используем простой сценарий PowerShell, который запускает WinMerge для каждой пары файлов проекта. Ничего сложного, но очень удобного.

Вы можете скачать скрипт по адресу Google Code. Чтобы запустить его, просто введите следующую команду:

@echo off 
powershell "& './Compare VS2010 Projects.ps1' -sync %*" 

Надеюсь, это поможет.

+0

Помог бы в C#, но файлы проекта C++ не могут быть объединены, так как макет полностью отличается от VC++ 2008 до VC++ 2010. Хорошая идея. – KeatsPeeks

+0

Mmh ... Я не видел, чтобы вы говорили о проектах VC++, а не о проектах C#. Поэтому я не знаю, действительно ли мое решение действительно применимо в вашем сценарии. –

+0

Я думаю, что это лучшая идея. Теперь мой вопрос сводится к «как я могу« объединить »между файлами проектов vc9 и vc10». Я мог бы сделать это сам с помощью инструмента. – KeatsPeeks

2

Я считаю, что это параметр командной строки для переноса файла проекта VS2008 на VS2010. Таким образом, вариант должен состоять только в том, чтобы поддерживать VS2008 и регенерировать VS2010-проекты.Недостатками являются

  • Не будучи в состоянии ввести VS2010 конкретные параметры проекта
  • Любые изменения в проект VS2010 будут перезаписаны и не сливались обратно в VS20008.
+0

Я подумал об этом, но мне нужно сделать 2010-> 2008, а также – KeatsPeeks

1

Visual Studio 2010 поддерживает мультитаргетинг, который позволит вам разрабатывать VS2010 и понижать инструменты платформы до V9, чтобы вы могли использовать новейшие инструменты для поддержки старого проекта. Почему бы просто не сделать это?

Он поставляется с VS2010 и VS2008 для C++ из коробки, вот некоторая информация о settingup в VS2005 набора инструментов

http://weblogs.asp.net/israelio/archive/2009/10/20/enable-vs-2010-multi-targeting-also-for-vs2005-c.aspx

+0

. Я считаю, что идея заключается не столько в том, что для компиляции исходных файлов может использоваться другая версия компилятора, но разные разработчики проекта могут использовать в зависимости от того, что из 2 IDE, которые у них есть (или предпочитают). –

+0

В прошлом IDE и версия компилятора были тесно связаны, поэтому для компиляции с VC8 вам нужен VS2k5, а для компиляции с VC9 вам нужен VS2k8 (у нас есть эта точная проблема в нашем офисе сейчас). VS2010 позволит всем использовать VS2010 и все еще downtarget для VC9, или VC8 вместо VC10. То, что я говорю, это дать каждому 2010 году и позволить им понизить, а не поддерживать несколько IDE :) –

1

я сделал именно это назад, когда VS 2008 вышел, и мы оценивали его в то время как остальная часть команды использовала VS 2005. Я не хотел фиксировать ни один из файлов проекта нового формата, так как это сломало бы его для остальной части команды, поэтому я написал небольшой скрипт в рубине, который просто искал все файлы .vcproj и переименовали их в _2008.vcproj. Я сделал то же самое и для файлов .sln, но также искал ссылки на .vcproj в файлах sln и переименовал их в _2008.vcproj, чтобы он ссылался на новые проекты.

Затем просто загрузите новые файлы решений и дайте мастер миграции выполнить свою задачу (я полагаю, что VS 2010 имеет такую ​​же, как и старые версии). Это позволяет запускать обе версии бок о бок. Если кто-либо из членов команды вносит какие-либо изменения в старый файл проекта, просто перезапустите конверсию, а затем мастер должен просто перенести измененный проект.

Существует дополнительная настройка, которую вам нужно добавить в скрипт, который должен изменить поля OutputDirectory и IntermediateDirectory в файле vcproj, так что вы также создаете разные каталоги. Если вы это сделаете, это значит, что вы должны иметь возможность строить с любой версией Visual Studio в одном исходном дереве.

0

Вы должны рассматривать копию VS2010 как филиал. Каждые пару дней и при каких-либо серьезных изменениях (Конечно, прохождение тестов проходит, конечно), слияние изменений в другой филиал. Это широко принятая и принятая практика в среде программного обеспечения Enterprise.

+0

Опять же, я не понимаю, как вы можете это сделать, поскольку вы CANT объединяетесь между проектами vc9 и vc10 – KeatsPeeks

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