Как преобразовать решение Visual Studio .NET 2008 в Visual Studio .NET 2005?

Предположим, что решение содержит только классы и что все эти классы написаны в соответствии со спецификациями .NET 2.0. Если бы это решение было открыто, преобразовано и сохранено в Visual Studio 2008, можно ли было бы повторно открыть решение позже в Visual Studio 2005 с некоторыми минимальными изменениями в файле .SLN?

Как бы это сделать?

Существует ли инструмент, который будет преобразовывать файлы .SLN с понижением частоты с 2008 по 2005 год, если все классы, содержащиеся в решении, уже написаны в соответствии со спецификациями .NET 2.0?


person James    schedule 06.05.2009    source источник


Ответы (6)


Обычно единственное, что вам нужно сделать с файлами .SLN, - это изменить номер версии в верхней части файла.

Файлы вашего проекта CS также будут почти в порядке, а если это не так, их можно настроить так, чтобы они подходили как для 2005, так и для 2008 года.

Некоторое время мы работали с двумя файлами решений (05 и 08), совместно использующими один и тот же набор файлов проекта CS.

Однако имейте в виду, что вы не можете совместно использовать файлы проекта VC между двумя версиями, подобными этой.

«Настройка» для файлов проекта выглядит следующим образом:

Проекты CS, созданные на VS2008, будут содержать строку:

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

VS2005 подавится этим, и вам нужно изменить его на следующее:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

Последний будет работать как с 2005, так и с 2008 годом.

person Will Dean    schedule 06.05.2009
comment
И, как сказано ниже в ggf31416, вы можете использовать инструмент, который сделает это за вас: emmet-grey .com / Articles / ProjectConverter.htm (также поддерживает VS2010). - person Groo; 01.04.2011

Если вы не используете какие-либо «необычные» функции в 2008 году, по моему опыту, единственное, что изменится, - это номер версии в нескольких местах. Его можно отредактировать вручную (он находится в верхней части файла IIRC). По крайней мере, стоит попробовать. Если вы используете функции, специфичные для VS2008 (дизайнеры и т. Д.), Это может не сработать, но для простых библиотек классов я добился успеха.

Возможно, вас заинтересует сообщение в блоге о сосуществовании VS2005 и VS2008, которое я написал некоторое время назад.

person Jon Skeet    schedule 06.05.2009

Здесь есть конвертер http://www.emmet-gray.com/Articles/ProjectConverter.htm (также работает с VS 2010).

Также существует http://www.dsmyth.net/wiki/Downloads_VS2008ToVS2005Patcher.ashx
(ссылка не работает?).

Я также нашел этот http://www.codeplex.com/Vs2008BackMigration, но не тестировал его. .

person ggf31416    schedule 06.05.2009

Да, это возможно, если вы «понизите» файлы решения.

Нет, такого инструмента я не знаю, и я искал.

У вас есть три варианта:

  1. Не открывайте файл решения в 2008 году и, следовательно, никогда не обновляйте его.
  2. Не смешивайте версии клиентов с одними и теми же файлами (т. Е. Придерживайтесь 2005 г. или всех обновлений)
  3. Храните отдельные файлы решений для 2005 и 2008 годов, убедитесь, что все одинаковые проекты присутствуют в обоих

Спасибо @Will Dean за напоминание мне о том, что файлами проекта действительно можно делиться. Обратите внимание, что они затронуты редактором 2008 года, но впоследствии их можно будет открыть в 2005 году.

person Lasse V. Karlsen    schedule 06.05.2009
comment
Для проектов CS нет необходимости хранить отдельные проекты, вы можете делиться ими между 2005 и 2008 годами. - person Will Dean; 06.05.2009
comment
Проекты да, файлы решений нет. - person Russ; 06.05.2009
comment
На самом деле я столкнулся с ситуацией, когда проект C # (не решение) из Visual Studio 2008 не удалось загрузить в Visual Studio 2005. Ошибка заключалась в следующем: импортированный проект C: \ Microsoft.CSharp.targets не был найден. - person James; 07.05.2009

Вы можете попробовать это. YMMV

http://www.emmet-gray.com/Articles/ProjectConverter.htm

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

person Eoin Campbell    schedule 06.05.2009

Прямого пути нет, и это непростая задача, если вы попытаетесь. Самый простой способ - создать новый проект 2005 года и добавить свои классы.

Для начала: вот отличия, которые вы увидите:

Файлы .csproj: (они основаны на схеме MSBuild)

(редактировать)

  • ИнструментыВерсия
  • Версия продукта
  • ProjectVersion

(Удалить)

  • СтарыйИнструментыВерсия
  • TargetFramework

Файлы .sln: (без схемы)

  • Формат Версия 10.0

и Т. Д.

person dirkgently    schedule 06.05.2009
comment
Это неправда. CS проекты могут использоваться в двух версиях. - person Will Dean; 06.05.2009
comment
OP спрашивал о файлах решения. Я добавил к своему ответу несколько деталей, объясняющих, почему это сложно. (Я никогда не говорил, что это невозможно.) - person dirkgently; 07.05.2009