visual-studio - update - refactor visual studio
Cómo actualizar archivos csproj con VS2017 (3)
VS2017 ha convertido hasta ahora correctamente varios project.json
basados en project.json
/ .xproj
al nuevo formato .csproj
.
También me gustaría usar el nuevo formato .csproj
con proyectos .csproj
más .csproj
que anteriormente solo .csproj
orientados a .NET Framework (es decir, no funcionaban con dnx / dotnet CLI).
Parece que incluso si un proyecto se <PackageReference>
solo en .NET Framework, los beneficios de <PackageReference>
y un archivo .csproj
fácilmente editable parecen valer la pena (esperemos que no sea demasiado grande).
¿Se puede hacer esto con Visual Studio 2017 directamente?
Si no, ¿qué pasos manuales serían necesarios?
Estoy editando mi respuesta para dejar en claro que no necesita actualizar su archivo .csproj
. Como Drew comentó a continuación, hay beneficios al hacerlo. Sin embargo, VS2017 seguirá funcionando bien con el archivo csproj
clásico. Además, no hay nada en VS2017 que realice la actualización por usted. Si desea aprovechar el nuevo formato, el recorrido a continuación le ayudará.
Actualizar el archivo .csproj
al nuevo formato de Visual Studio 2017 es fácil para bibliotecas de clases simples o proyectos de consola.
Si no está utilizando el control de versiones, antes de comenzar, asegúrese de hacer una copia de seguridad del archivo csproj
, y de las Properties/AssemblyInfo.cs
y packages.config
. El nuevo archivo csproj
es genial. En muchos proyectos he reemplazado cientos de líneas de código con una docena más o menos. Sin embargo, como Visual Studio 2017 continúa csproj
archivos csproj
anteriores, este puede ser un caso de optimización prematura. Si tiene una solución que contiene docenas de proyectos, muchos paquetes de NuGet y cualquier personalización de csproj
, es probable que esté realizando un proyecto de trabajo innecesario.
Reemplace todo el contenido de su archivo .csproj con el código apropiado de la siguiente manera.
Biblioteca de clases
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
</PropertyGroup>
</Project>
Aplicación de consola
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net462</TargetFramework>
</PropertyGroup>
</Project>
Cambie el atributo <TargetFramework>
a la versión .NET que necesita, como net452, net46, net461, etc.
Por defecto, todo el código dentro de la carpeta de su proyecto será recogido por el compilador. Si tiene código fuera de la carpeta de su proyecto, debe hacer referencia explícita a él de la misma forma que lo hace en versiones anteriores de Visual Studio y csproj
.
Después de realizar los cambios anteriores, cargue su solución en Visual Studio 2017. En este punto, los proyectos más básicos deberían construirse. Si no es así, es probable que necesite agregar referencias faltantes de ensamblados o proyectos. Agregar referencias es muy similar a hacerlo en versiones anteriores de Visual Studio. Seleccione su proyecto en el Explorador de soluciones, haga clic con el botón derecho en Dependencies
y seleccione Add Reference
. Agrega cualquier referencia de Framework o Proyecto que te falte.
Intente construir su solución / proyecto de nuevo. Puede recibir errores sobre atributos duplicados. Este error se debe a que los atributos definidos previamente en AssemblyInfo.cs
se han movido al archivo csproj. Eliminar el archivo AssemblyInfo.cs
, que se encuentra en la carpeta Propiedades, debería resolver estos errores. Antes de eliminar AssemblyInfo.cs
, debe mover los datos que haya definido. La mayoría de los atributos se pueden ingresar en la sección de información del paquete de su archivo de proyecto. Haga clic con el botón derecho en el nombre de su proyecto, seleccione la página Paquete e ingrese los datos que se definieron previamente en su archivo AssemblyInfo.cs
. Esto incluye elementos como la versión de ensamblaje, autor, derechos de autor, etc.
A continuación se muestra una captura de pantalla que muestra el paso anterior.
Si está utilizando algún paquete NuGet en su proyecto, también necesita moverlos al nuevo formato. Anterior a Visual Studio 2017, NuGet confiaba en un archivo llamado Packages.config
en la raíz de su proyecto, además de las referencias en csproj
. Para migrar las referencias de su paquete NuGet, haga clic derecho en su solución y cargue Nuget Package Manager. Una vez cargado en la esquina superior derecha, haga clic en la rueda dentada y se cargarán las opciones de NuGet Package Manager. Seleccione General
. En Administración de paquetes, cambie la opción Default package management format
a PackageReference. En este punto, tendrá que agregar manualmente todos los paquetes de NuGet a su solución. Puede encontrar todos los paquetes en el archivo packages.config
en la carpeta raíz del proyecto. Una vez que haya agregado todos los paquetes, puede eliminar el archivo packages.config
.
Hay una herramienta increíble que convierte automáticamente los proyectos que utilizan packages.config o project.json a PackageReference.
Instálelo en su Visual Studio y haga clic derecho en la solución.
Después de instalar la extensión, abra su solución y haga clic derecho en la solución en el Explorador de soluciones y haga clic en Actualizar a referencias de paquetes
- Después de seleccionar eso, el proyecto se transformará como se muestra a continuación. Se recomienda encarecidamente que realice esto en un directorio habilitado con control de origen para que pueda deshacerlo fácilmente si algo sale mal.
He creado una herramienta para esto que funciona con archivos csproj: https://github.com/hvanbakel/CsprojToVs2017
Simplemente puede ejecutarlo en un csproj y convertirá el archivo y creará una copia de seguridad del antiguo.