2015-02-10 4 views
39

У меня есть решение в Visual Studio 2012 с 170 C# проектами в нем. Мне нужно перенастроить все проекты с .NET Framework 4.0 до 4.5.2.Retargeting Все проекты в решении .NET 4.5.2

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

Я заметил, что эти изменения включают добавление нескольких новых тегов XML в .csproj, в зависимости от некоторых атрибутов текущего проекта.

Как я могу выполнить перенастройку всех 170 проектов C# без использования инструмента для замены текста, чтобы заменить номер целевой версии? Я хочу, чтобы Visual Studio делала все необходимые изменения и дополнения к тегам и их замену не позволяла это делать.

+0

Я не знаю, как это сделать автоматически. Я думаю, что ваш лучший выбор - это стандартный макрокоманд для Windows, который вы используете клавиатурные команды. Но я бы выполнил их по одному, а не попытался чтобы объединить их вместе, поскольку может быть трудно определить, когда VS выполняется с его работой во всех случаях. –

+1

Нет, вы не должны этого делать. * Особенно * не 4.5.2, он не имеет полезных новых типов и вряд ли будет охвачен будущими пакетами с несколькими таргетингом. Так же, как 4.0x не было. Сделайте это * один проект за один раз и только те, которые в нем нуждаются. Те, в которых вы * на самом деле * хотите добавить новую ссылочную сборку и изменить код для их использования. Если вы хотите игнорировать этот совет, вы, вероятно, это сделали, а затем используйте «Редактировать»> «Найти и заменить»> «Заменить в файлах», чтобы заменить элемент «TargetFrameworkVersion» в файлах * .csproj. Удостоверьтесь, что ваш источник управления прочен. –

+1

@ HansPassant Ваше решение Find/Replace - это именно то, что я не хотел делать в соответствии с моим вопросом. Мне нужно более надежное решение. –

ответ

46

В документации MSDN «Migration Guide to the .NET Framework 4.5» и «How to Configure an App to Support .NET Framework 4 or 4.5» обсуждаются только проекты. Нет никаких подробностей о применении изменений во всем решении сразу, и я не видел функцию в VS, которая ее поддерживает.

Однако в галерее Visual Studio имеется расширение с нулевым рейтингом (Target Framework Migrator), которое поддерживает обновление до версии 4.5.2 (а также более новые версии) и похоже, что оно будет делать именно то, что вы хотите. Исходный код доступен по адресу GitHub, если вам интересно.

Обратите внимание, что отсутствие такой функции может быть преднамеренным (а не просто упущением). Я просто догадываюсь, но, возможно, MS рисует только проекты, которые нуждаются в, новые Frameworks будут обновлены. FWIW, если вы закончите модернизацию некоторых проектов, которые будут совместно использоваться другими решениями, эти решения могут не сработать до тех пор, пока не будут обновлены.

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

+0

Инструмент «Target framework migrator» не работает в последнем обновлении VS 2017 15.5.5, «Invalid parameter» –

+0

@Anas Надеюсь, автор обойдется в его обновлении. Если вы этого не сделали, вы можете рассмотреть [открытие проблемы] (https://github.com/VHQLabs/TargetFrameworkMigrator/issues) для него на GitHub. –

4

Я построил себе простой инструмент для переноса целевых рамочных версий для всего решения, поскольку Target Framework Migrator Extension не поддерживает Visual Studio 2017 Скачать инструмент из моего репозитория GitHub https://github.com/Xpitfire/TargetFrameworkMigrator

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

+2

Согласно веб-сайту, он поддерживает _ «Visual Studio 2012, 2013, 2015, 2017» _, и проект был обновлен совсем недавно, как месяц назад. Удивительно, что у вас это работает, но вы можете [открыть проблему] (https://github.com/VHQLabs/TargetFrameworkMigrator/issues) для этой ошибки. Или даже отправьте PR в проект с исправлением, чтобы все могли извлечь из этого выгоду! –

+0

Теперь это точно. –

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