Visual Studio 2012 не конвертирует решение vs2010?

Я открыл свое решение vs2010 с помощью vs2012, но оно не преобразовывалось, так как происходило с 2008 по 2010 год. Так что мое решение по-прежнему остается таким же, как 10 метка на нем. когда я делаю новое решение, конечно, на нем есть 11 меток. У меня нет проблем с запуском, но мне любопытно. Есть ли разница? если да, то как преобразовать в решение vs2012?


person Emil    schedule 23.08.2012    source источник


Ответы (10)


Есть некоторые исключения, но в основном вы сможете открыть одинаковые файлы проектов и решений как в VS2012, так и в VS2010 SP1.

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

person Joachim Isaksson    schedule 23.08.2012

Мне удалось «преобразовать» файл решения, чтобы изменить строку, содержащую «# Visual Studio 2010», на «# Visual Studio 2012» в файле .SLN.

person RuudKok    schedule 13.09.2012
comment
Сработало для меня - легко исправить! Кроме того, этот ответ важен, потому что он позволяет гарантировать, что (по умолчанию) ваши коллеги откроют ваше решение, используя правильную версию Visual Studio. Когда коллеги извлекают его из системы управления версиями, приятно, что когда они дважды щелкают файл .sln в своей файловой системе, он открывается в Visual Studio 2012... вместо 2010. - person ClearCloud8; 28.11.2012
comment
На всякий случай, если ты не знаешь. Этот обходной путь работает только в том случае, если у вас установлен пакет обновления 1 (SP1). - person Cleiton; 13.12.2012
comment
Клейтон: Я опубликовал это «решение» за несколько месяцев до выхода SP1, и в то время оно работало. - person RuudKok; 13.12.2012
comment
Я еще не использовал 2012, так что простите мое невежество, но какой в ​​этом смысл? При каких обстоятельствах будет проблемой, если ваш коллега откроет решение с помощью 2010? Я не пытаюсь бросить вам вызов - я просто честно не знаю. - person Daniel Schilling; 03.01.2013
comment
@DanielSchilling: Похоже, этот комментарий касается исходного вопроса, я прав? Если нет: идея заключается в том, чтобы автоматически открывать решение с помощью VS2012 вместо VS2010. Вот и все. - person RuudKok; 16.01.2013
comment
@DanielSchilling: Это может быть проблемой, когда недавно преобразованный проект использует какую-либо функцию, представленную в 2012 году, которой нет в 2010 году. Одним из примеров является то, что обновление проекта может изменить набор инструментов платформы на v110, о котором VS2010 не знает и приведет к ошибке сборки MSB8008. - person Edward; 03.06.2013
comment
Мне нужно было изменить версию формата 11.00 на 12.00 в файле sln. - person gerleim; 12.05.2014

Ручное редактирование файла решения не требуется и не рекомендуется. Просто откройте решение VS2010 в VS2012, щелкните решение левой кнопкой мыши (в самом верху обозревателя решений), затем используйте File | Сохранить как, чтобы перезаписать исходный файл. Это эффективно преобразует файл решения VS2010 в файл решения VS2012.

person 2Toad    schedule 02.04.2013
comment
Это работает для меня, только если я сначала щелкну левой кнопкой мыши решение (в самом верху обозревателя решений), прежде чем я сделаю Сохранить как - person aaaa bbbb; 10.09.2013
comment
Мне это нравится больше, чем редактирование файла решения вручную — что я и делал, чтобы позаботиться об этом. - person David Hay; 27.08.2014
comment
В VS2013 этот метод редактирует всего 4 строки, а также добавляет комментарий о минимальной версии, что может быть удобно на некоторых системах. Я рекомендую это. - person d11; 12.12.2014
comment
Не могу поверить, что это так просто, я пытался в течение нескольких дней, потому что мое решение — это огромный проект, и я не хотел делать что-то глупое, что могло бы поставить под угрозу целостность решения в будущем. Спасибо 2Toad! - person Storm; 04.01.2015

Речь идет о совместимости с Visual Studio 2012.

Если вы создали ресурсы в Visual Studio 2010 с пакетом обновления 1 (SP1), многие из них будут загружаться и работать в Visual Studio 2012 без каких-либо дополнительных действий с вашей стороны.

Многие ресурсы также будут снова открываться в Visual Studio 2010 с пакетом обновления 1 (SP1) без каких-либо проблем, даже после того, как вы откроете эти ресурсы в Visual Studio 2012.

person user1619962    schedule 23.08.2012

Для проектов C++ это имеет значение, так как компилятор 2012 (VC11) будет использоваться только в проектах, явно относящихся к 2012, а не в проектах 2010, открытых в VS 2012. Некоторые улучшения C++11 доступны с компилятором VC11, но не с VC10 (см. это SO Answer для сводки), в том числе:

Чтобы преобразовать проект VS 2010 в VS2012, нет необходимости вручную редактировать файл решения или «Сохранить как» поверх существующего проекта. Вместо:

Если вы отклоните обновление при первом появлении запроса, вы можете обновить проект позже, открыв меню Проект и выбрав Обновить проекты VC++... [в верхней части меню ]

Из MSDN "Как обновить проекты Visual C++ до Visual Studio 2012"
(Эта страница была связана с ссылка MSDN, но я хотел получить ответ здесь, на SO, поскольку в ряде других ответов предлагались обходные пути вручную вместо этой функции VS 2012)

person Daryn    schedule 22.05.2013
comment
Это здорово, но эта опция иногда случайно исчезает, особенно в решениях с проектами C++/CLI и C#. - person Wilbert; 07.01.2014

В моем случае у меня были некоторые вещи Visual Source Safe (мой проект был создан с помощью Visual Studio 2003/2005, да, очень старой!)

Как только я вручную удалил материал VSS, преобразование прошло успешно. PS: я знаю, что речь идет о VS2010, но, возможно, это поможет другим.

person Adi    schedule 02.12.2013

Вы можете преобразовать проект из VS2010 в VS2012, выполнив следующие действия:

  1. Добавьте проект 2010 в свое решение VS2012, щелкнув правой кнопкой мыши свое решение в обозревателе решений и выбрав Добавить --> Существующий проект...

  2. Проект появится в решении, и к его имени будет добавлено (Visual Studio 2010).

  3. Щелкните правой кнопкой мыши добавленный проект и выберите «Свойства».

  4. На панели «Свойства конфигурации» -> «Общие» измените параметр в поле «Набор инструментов платформы» на Visual Studio 2012 (v110).

  5. Повторите для каждого типа конфигурации, например. Выпуск и отладка.

person zooropa    schedule 23.04.2014

Я столкнулся с этим вопросом, когда искал решение конкретной проблемы: MSBuild не удалось выполнить цель публикации для решения VS2012, которое зародилось в VS2010 при вызове из командной строки (в частности, через TeamCity):

error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Windows Azure Tools\2.3\Microsoft.WindowsAzure.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

MSBuild искал цели Azure SDK 2.3 в расположении VS10 (C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Windows Azure Tools\2.3\Microsoft.WindowsAzure.targets). Причина объясняется Сайедом Ибрагимом Хашими в сообщении в блоге и, как я понял, это сводится к некоторым решениям, которые они приняли, включив совместимость между версиями для файлов решений. Решение было простым: добавьте свойство VisualStudioVersion в вызов MSBuild, примерно так:

msbuild.exe MyAwesomeWeb.sln /p:VisualStudioVersion=11.0

На практике это переопределяет следующее в каждом файле csproj:

<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>

Предположительно, вы могли бы получить тот же результат, отредактировав все это вручную, чтобы заменить 10.0 на 11.0, но это может нарушить обратную совместимость — я не пробовал. Я также не пробовал обновлять VS2013, чтобы увидеть, сохраняется ли проблема.

Итак, чтобы завершить это, ответив на вопрос: да, есть некоторые различия, прежде чем вы «конвертируете» (используя любой из методов, предлагаемых другими ответчиками), и некоторые различия остаются после этого.

person Dave Gregory    schedule 06.06.2014

Это немного отличается, но в том же духе, поэтому, если это кому-то поможет:

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

Наконец, я нашел параметр «Устранить ошибки», щелкнув правой кнопкой мыши решение в обозревателе решений. VS снова прошел процесс загрузки, и все заработало; Нет проблем.

Я не знаю, что в тот раз было по-другому, но, видимо, это имело значение.

person Community    schedule 09.11.2013

это просто, просто отредактируйте файл .sol, измените версию на 11

так

Файл решения Microsoft Visual Studio, формат версии 12.00

Visual Studio 2012
person Same7Farouk    schedule 14.11.2013