Retargeting Todos los Proyectos en una Solución to.NET 4.5.2


Tengo una solución en Visual Studio 2012 con 170 proyectos en C#. Necesito reorientar todos los proyectos de. NET Framework 4.0 a 4.5.2.

Prefiero dejar que Visual Studio maneje esto entrando en las propiedades de cada proyecto, cambiando el marco de destino y dejando que Visual Studio realice los cambios necesarios en el .archivos csproj.

Me di cuenta de que estos cambios incluyen la adición de algunas nuevas etiquetas XML a la .csproj, dependiendo de algunos atributos de la corriente proyecto.

¿Cómo puedo reorientar por lotes todos los 170 proyectos de C# sin solo usar una herramienta reemplazar texto para reemplazar el número de versión objetivo? Quiero que Visual Studio haga todas las modificaciones y adiciones de etiquetas necesarias y reemplace solo no permitirá que eso suceda.

Author: Kyle V., 2015-02-10

3 answers

La documentación de MSDN "Migration Guide to the.NET Framework 4.5" y "How to Configure an App to Support. NET Framework 4 or 4.5" solo trata sobre la modificación de proyectos. No hay detalles sobre la aplicación de cambios a toda la solución a la vez, ni he visto una función en VS que lo soporte.

Sin embargo, hay una extensión (bien calificada) llamada Target Framework Migrator disponible en la galería de Visual Studio, que admite la actualización a 4.5.2 (así como nuevas versiones**) y parece que va a hacer exactamente lo que quieres. El código fuente está disponible en GitHub , si estás interesado.

Tenga en cuenta que la falta de tal característica puede ser intencional (y no solo una omisión). Solo estoy adivinando, pero tal vez MS calcula que solo los proyectos que necesitan los nuevos marcos se actualizarán. FWIW, si termina actualizando algunos proyectos que se comparten con otras soluciones, esas soluciones pueden fallar hasta que estén actualizadas demasiado.

Dicho esto, si estás en una tienda pequeña con solo una (o algunas) soluciones y estás buscando actualizar todo de una sola vez, entonces quizás la herramienta anterior funcione para ti.


* * No ha habido mucho desarrollo últimamente. Si no puede hacer que funcione con una versión más reciente de.NET Framework, compruebe los problemas existentes PRs y para obtener soluciones. Por ejemplo, alguien publicó una corrección de para.NET Framework v 4.7.1. Esperemos que estos se fusionarán eventualmente.

 61
Author: Grant Winney,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-19 15:37:58

He creado una herramienta sencilla para migrar las versiones de target framework para una solución completa, porque la extensión Target Framework Migrator no es compatible con Visual Studio 2017. Descargar la herramienta desde mi repositorio GitHub https://github.com/Xpitfire/TargetFrameworkMigrator

Sé que esta no es la mejor manera de hacerlo, pero funcionó para mí y tal vez también ayude a alguien más.

 5
Author: Marius-Constantin Dinu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-29 13:06:25

Dado que el Migrador Target Framework está roto, hice mi propia búsqueda/reemplazo (usando git bash, funciona bien en windows) ; Básicamente cambia la v4.6.x hacia v4.7.2, luego vuelve a convertir los archivos a usar el infame CRLF del DOS:

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
 0
Author: JB.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-24 15:31:05