Преобразование решения VS2012 в VS2010


127

Я работаю в проекте VB с VS 2012, и после завершения я пытаюсь добавить проект установки.

Я не нашел его (поскольку проект установки был прекращен после VS2010), поэтому я переключился на VS2010, но проблема в том, что проект не открывается, и я получаю это сообщение:

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

Я попробовал эту статью: http://www.codeproject.com/Tips/80953/Converting-VS2010-Solution-to-VS2008 и попытался преобразовать с 2012 года на 2010 год, но появляется то же сообщение.


Почему бы вам просто не использовать VS2010 для создания единого установочного проекта - насколько я помню, вам не нужно включать проекты и вы можете добавлять файлы самостоятельно
Carsten

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

1
У вас на vs2010 стоит sp1? Я думаю, вам понадобится пакет обновления, чтобы он открывал файлы проекта / решения 2012 года.
Георгий Стоянов

Ответы:


306

Я тоже столкнулся с подобной проблемой. Я погуглил, но не нашел решения. Итак, я попробовал самостоятельно, и вот мое решение.

Откройте файл решения в блокноте. Сделайте 2 изменения

  1. Заменить «Формат версии 12.00» на «Формат версии 11.00» (без кавычек).
  2. Замените "# Visual Studio 2012" на "# Visual Studio 2010" (без кавычек).

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


3
Есть ли в этом обратная сторона? Кажется, это слишком просто, чтобы быть правдой.
kbeal2k

4
У меня это не сработало, оно все еще утверждало, что несовместимо?
Дэвид

3
Спасибо за этот совет! Работает даже для перехода на более раннюю версию проекта веб-API ASP.NET. Помимо адаптации формата версии 12.00 к версии 11.00 в sln и настройки элемента TargetFrameworkVersion в csproj с 4.5> 4.0; Мне пришлось удалить элемент httpRuntime в web.config и настроить атрибут targetFramework компиляции в web.config с 4.5> 4.0
AardVark71

2
Потрясающе, не могу поверить, что обратной совместимости нет.
Стивен Мерби

1
Я просто попал в эту ловушку, используя VS2013 - снова изменил Формат на 11, и в VS2010 снова все было хорошо - спасибо!
Surfbutler

121

Просто чтобы подробнее рассказать об отличном ответе Бхавина - редактирование файла решения работает, но вы все равно можете получить несовместимую ошибку (как сообщил Дэвид), если вы выбрали .NET 4.5 в качестве версии .NET по умолчанию в вашем проекте VS2012, а ваша среда VS2010 не поддержите это.

Чтобы быстро исправить это, откройте файл VS2012 .csproj в текстовом редакторе и измените TargetFrameworkVersion до 4.0 (с 4.5). Затем VS2010 успешно загрузит «отредактированное» решение и проекты.

Вам также необходимо будет отредактировать файлы app.config, которые имеют ссылки на .NET 4.5, аналогичным образом, чтобы позволить им работать в среде .NET 4.0.


5
Это вместе с ответом Бхавина сработало отлично. Спасибо вам обоим.
desaivv

2
Спасибо за этот совет! Работает даже для перехода на более раннюю версию проекта веб-API ASP.NET. Помимо адаптации формата версии 12.00 к версии 11.00 в sln и настройки элемента TargetFrameworkVersion в csproj с 4.5> 4.0; Мне пришлось удалить элемент httpRuntime в web.config и настроить атрибут targetFramework компиляции в web.config с 4.5> 4.0
AardVark71

Кроме того, вам может, как и мне, придется просмотреть ваши файлы .vcproj и изменить набор инструментов платформы с v110 на v100.
Xyon

2

У меня была аналогичная проблема, и ни одно из вышеперечисленных решений не помогло, поэтому я выбрал старый резервный сервер, который всегда работает:

  1. Переименуйте папку, содержащую проект
  2. Сделайте новый проект с таким же названием с 2010
  3. Различайте две папки и->
  4. Скопируйте все исходные файлы напрямую
  5. Игнорировать bin / debug / release и т. Д.
  6. Отличите .csproj и скопируйте все релевантные строки.
  7. Если файл .sln содержит только один проект, игнорируйте его. Если это сложно, то тоже попробуйте различить.

Это почти всегда срабатывает, если вы потратили на это 10 минут и не можете этого понять.

Обратите внимание, что для аналогичных проблем со старыми версиями (2008, 2005) вы обычно можете уйти, просто изменив версию в .csproj и либо изменив версию в .sln, либо отбросив ее, но, похоже, это не работает в 2013 году. ,


2

Самое простое решение ... откройте свой сайт в vs2013 и перейдите в Debug-> WebsiteProperties (последний вариант), откроется новое окно.

в этом окне перейдите к опции «Сборка» и измените версию .NET Framework с 4.5 на 4.0 ..... затем выберите ОК. [примечание: этот шаг будет работать, только если ваш проект не имеет зависимостей от vs2013 ...]

Теперь откройте свой сайт в vs2010


1

Откройте файл проекта, а не решение. Проект будет преобразован мастером, и после преобразования при сборке проекта будет создано новое Решение как VS2010.


1

Решение VS2010 поддерживается VS2012. Решение VS2012 не поддерживается VS2010 -> только одностороннее обновление. VS2012 не поддерживает проекты установки. Дополнительные сведения о совместимости VS2010 / VS2012 см. Здесь: http://msdn.microsoft.com/en-us/library/hh266747(v=vs.110).aspx


1
При чтении этого документа говорится, что ЕСТЬ вещи, которые будут отлично работать между ними - это означает, что вы можете создать проект / решение в VS2012 и без проблем открыть его в VS2010. Однако в документе указывается, что есть вещи, которые, если они будут использоваться в 2012 году, не позволят вам открыть в 2010 году. Stackoverflow.com/questions/10902865/… - еще один хороший и простой ответ.
brazilianldsjaguar

Если вы внимательно его прочитаете, то увидите небольшую разницу: проекты, созданные в VS2010, работают в VS2012, а не наоборот. «... вы можете открыть проект, который был создан в Visual Studio 2010 SP1 ...»
Петр Левандовски

0

Простое решение, которое сработало для меня.

  1. Установите редактор Vim для Windows.
  2. Откройте проектное решение VS 2012 с помощью редактора Vim и измените версию, предназначенную для решения Visual Studio 10.
  3. Откройте решение с помощью Visual Studio 2010 .. и продолжайте работу;)

Почему Vim, а не просто блокнот?
Zac
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.