Работа с несколькими версиями Visual Studio - PullRequest
15 голосов
/ 23 февраля 2011

Я пытаюсь найти способ использовать несколько версий Visual Studio в одном наборе проектов. Большинство нашей команды использует 2008 год, но я пробую 2010 год. Все проекты на C #.

Насколько я понимаю, Visual Studio 2010 настаивает на обновлении всех проектов, поэтому невозможно оставить все файлы решения / проекта в версиях 2008 года. Я действительно не хочу разветвлять все исходное дерево, поэтому я хотел бы найти способ для нескольких версий файлов проекта, сосуществующих. В настоящее время я продублировал все файлы .sln и .csproj, поэтому у меня есть:

# 2008 versions
SolutionName.sln
ProjectA.csproj
ProjectB.csproj

# 2010 versions
SolutionName.vs2010.sln
ProjectA.vs2010.csproj
ProjectB.vs2010.csproj

Проблема в том, что, несмотря на то, что все версии 2010 файлов имеют те же имена сборок, что и их аналоги 2008 года, Visual Studio (2010) считает, что все проекты ProjectName.vs2010. Переименование проекта в VS завершается неудачно с сообщением о том, что файл с таким именем уже существует.

Я не думаю, что размещение версии 2010 в подпапке было бы решением, так как это испортило бы любые относительные пути в файлах.

Итак:

  • Есть ли способ убедить VS, что к имени проекта не следует добавлять суффикс .vs2010 (т. Е. Имя не совпадает с именем файла)? Или
  • Я неправильно подхожу к этому? Есть ли лучший способ работы с несколькими версиями VS в одних и тех же проектах?

UPDATE

Мое первоначальное утверждение было неверным, поскольку Visual Studio не удалось найти ссылки на проект, поскольку он использовал имя файла. Конкретная проблема, с которой я столкнулся, заключалась в том, что в моих файлах сборки ссылки на проекты имели вид

<ProjectReference Include="..\..\path\to\ProjectName.vs2010.csproj">
    <Project>{48354450-2462-449D-8B32-EFECA39F6CD7}</Project>
    <Name>ProjectName</Name>
</ProjectReference>

Файлы проекта, которые я скопировал, очевидно, имеют другой идентификатор (или какой-либо другой элемент <Project>. Простое удаление элемента из файла сборки решило эту конкретную проблему:

<ProjectReference Include="..\..\path\to\ProjectName.vs2010.csproj">
    <Name>ProjectName</Name>
</ProjectReference>

Сказав это, весь процесс дублирования файлов проекта и решения был на самом деле большим усилием, чем оно того стоит, поэтому я не рекомендую этот подход.

Ответы [ 4 ]

3 голосов
/ 23 февраля 2011

Вы часто модифицируете проекты?

Вы можете просто работать с обновленной версией файлов csproj и sln. Таким образом, вы будете фиксировать / регистрировать все изменения в файлах исходного кода, за исключением файлов проекта, которые все равно не часто изменяются (за исключением добавления новых файлов).

Затем, если вы хотите зафиксировать изменения в файлах проекта, вы должны работать с промежуточной локальной версией файла VS2008 и выстроить ее в линию с помощью ваших любимых инструментов diff / merge, прежде чем в конечном итоге зафиксировать эту версию VS2008. Это было бы какое-то местное отделение.

1 голос
/ 23 февраля 2011

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

0 голосов
/ 23 февраля 2011

Файлы проектов Visual Studio 2010 и 2008 (.csproj) совместимы друг с другом, если у вас установлены оба редактора, то есть вы можете обновить его, поработать над ним в 2010 году и поручить кому-то еще работать в 2008 году без каких-либо проблем.,Единственное предостережение в том, что вы должны оставить целевой фреймворк как .net 2.0 или 3.5, и тем, кто работает в 2008 году, также нужно установить 2010.

единственная проблема возникает, если они пытаются открыть проектфайл в 2008 году, и у них не установлено 2010 (потому что я думаю, что в 2010 добавлена ​​новая цель сборки, о которой стандарт 2008 не будет знать).Я не думал, что это было проблемой, но я просто столкнулся с ней на прошлой неделе (в веб-проекте), поэтому он существует в некоторой форме для некоторых проектов.

, если вы идете по пути переименования,лучший способ сделать это - открыть файл sln в блокноте и переименовать ссылки csproj на новые имена вручную (добавив любые новые переименованные пути к папкам), затем переименовать любые папки вне Visual Studio, а затем переименовать имя файла вПроводник Windows, затем переименуйте csproj в Проводнике Windows, затем откройте решение в Visual Studio.ваши привязки scm могут быть в этом месте, хотя ...

0 голосов
/ 23 февраля 2011

Вы пытались открыть SolutionName.vs2010.sln в простом текстовом редакторе и изменить название проекта, отображаемое на экране?

(форма: Project ("{$ GUID}") = "$ DISPLAYNAME", "PROJECTFILE", "{$ OTHERGUID}"

Отвечая на вторую часть вашего вопроса:

Почему важно скрывать, что существует несколько версий файлов проекта? Реальность такова, что есть две версии, и вы должны быть осторожны, чтобы поддерживать обе из них относительно состояния вашего проекта в любом случае (файлы добавлены / переименованы / удалены; параметры конфигурации изменены).

Наличие двух наборов проектов и файлов решений приведет к различиям между ними, что приведет к поломке.

Обычно: не смешивайте выпуски Visual Studio в одном проекте. Сохранение идентичного набора инструментов между разработчиками избавит вас от многих проблем.

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