Ретаргетинг всех проектов в решении to.NET 4.5.2


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

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

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

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

3 51

3 ответа:

документация MSDN" руководство по миграции в .NET Framework 4.5" и "как настроить приложение для поддержки .NET Framework 4 или 4.5 " обсуждается только изменение проектов. Нет никаких подробностей о применении изменений ко всему решению сразу, и я не видел функции в VS, которая его поддерживает.

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

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

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


** там не было много развития в последнее время. Если вы не можете заставить его работать с более новой версией .NET Framework, проверьте существующий PRs и вопросы для исправления. Для например, кто-то написал исправление для .NET Framework v 4.7.1. Надеюсь, что они будут объединены в конечном итоге.

Я создал себе простой инструмент для переноса версий целевой платформы для всего решения, потому что расширение Target Framework Migrator не поддерживает Visual Studio 2017. Загрузите инструмент из моего репозитория GitHubhttps://github.com/Xpitfire/TargetFrameworkMigrator

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

С Target Framework Migrator сломан, я свернул свой собственный поиск / замену (используя git bash, он работает нормально на windows); в основном он меняет В4.6.x на В4.7.2, затем он преобразует обратно файлы с помощью печально известного DOS CRLF:

find . \( -iname '*.csproj' -o -iname '*.vcxproj' -o -iname 'app.config' \) \
 -exec grep -Z -l 'v4\.6\..' \{} \; | xargs -0 sed -i 's/v4\.6\../v4.7.2/'  
find . \( -iname '*.csproj' -o -iname '*.vcxproj' -o -iname 'app.config' \) \
 -exec grep -Z -l 'v4\.7\..' \{} \; | xargs -0 unix2dos