visual studio requisitos que proyecto migrar upgrade visual-studio-2017 csproj

upgrade - que - requisitos visual studio 2017



Cómo convertir un csproj no principal a formato VS2017 (2)

No hay una opción integrada en VS porque el limpiador csproj es principalmente para proyectos de .NET Core. No funciona completamente con todos los demás tipos de proyectos sin un poco de esfuerzo y otras personalizaciones adicionales en el archivo del proyecto. Por ejemplo, el cableado de elementos como los generadores de código o el anidamiento en Winforms o aplicaciones WPF puede no funcionar de manera inmediata para un nuevo estilo SDK (nuevo estilo) .csproj. Por lo general, estos se pueden solucionar actualizando los metadatos según sea necesario:

<ItemGroup> <Compile Update="Properties/Resources.Designer.cs"> <AutoGen>True</AutoGen> <DependentUpon>Resources.resx</DependentUpon> </Compile> </ItemGroup>

Tenga en cuenta que el atributo Actualizar es clave aquí: no desea incluir el archivo por segunda vez en el Grupo de elementos, solo desea actualizar sus metadatos existentes (o que faltan).

También hay algunas advertencias para algunos tipos de proyectos donde los objetivos no se importan como se espera en un csproj vs SDK basado en SDK y uno antiguo. Esto depende de cómo se crean sus objetivos, pero un ejemplo de esto es crear proyectos VSIX (extensiones VS) usando el VSSDK es realmente difícil de entender en un proyecto basado en SDK.

Si quieres probar la conversión, la publicación del blog de Nate McMaster es un excelente recurso. Cubre tanto desde cero como convirtiendo el archivo in situ. Descubrí que la mayoría de las veces es bastante fácil comenzar con un nuevo .csproj limpio y agregar cualquier solución necesaria.

También vale la pena señalar que gran parte de la basura en su archivo csproj normal es solo contenido generado, y un poco de edición manual puede ayudar en gran medida a limpiarlo. El uso de patrones globales, por ejemplo, puede guardar cientos de líneas en un archivo de proyecto grande. De todos modos, esto es parte de cómo funcionan los proyectos basados ​​en SDK: simplemente hacen los globos en el SDK, por lo que no aparece en el .csproj, pero funciona casi igual. Por ejemplo, si desea incluir todos los archivos de C # en una carpeta (recursivamente), puede hacer algo como esto:

<ItemGroup> <!-- Include all C# files under the SampleFolder and any child folders --> <Compile Include="SampleFolder/**/*.cs" /> <!-- Include all C# files under this project''s root: --> <Compile Include="**/*.cs" /> <ItemGroup>

El ** coincide con cualquier ruta de carpeta recursiva.

Existen algunas diferencias en el comportamiento de Visual Studio, porque el nuevo sistema de proyectos para proyectos basados ​​en SDK funciona muy diferente al antiguo sistema de proyectos .csproj. Por ejemplo, SDK-projects detectará automáticamente cuando los archivos cambian en el disco y los agrega / elimina en los proyectos; old-csproj no los actualizará en VS hasta que se vuelva a cargar el proyecto.

Si utiliza el uso de globos en todas partes, se encontrará con un problema similar al de csproj basado en SDK, donde ciertos archivos no están conectados a sus generadores de código o no están anidados correctamente. Como se mencionó anteriormente, puede usar el atributo Update= para reparar archivos específicos (o incluso globs más específicos) para que los metadatos vuelvan a ser iguales.

Tengo dos proyectos en VS2015

  1. Un .NET Core (project.json, xproj)
  2. Un csproj .NET regular

Cuando abro el proyecto 1 con VS2017, migra bien al nuevo formato csproj.

El proyecto 2 funciona en VS2017, pero me gusta convertir / migrar / actualizar este csproj al nuevo formato de archivo del proyecto para beneficiarme de las nuevas características de csproj (multi target, sin lista de archivos grandes, csproj legible, información NuSpec en csproj, etc.)

¿Cómo podría hacer eso? No puedo encontrar una opción en VS2017 para eso.

Utilizando: VS2017 RTM