Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Si es desarrollador de extensiones, este artículo puede ayudarle a comprender cómo funcionan las extensiones en Visual Studio 2026. Con Visual Studio 2026, los usuarios pueden instalar fácilmente las extensiones de Visual Studio 2022.
Dado que hay cambios de ruptura mínimos, la actualización de la extensión debe ser sencilla. Con Visual Studio 2026, puede probar la extensión existente y proporcionarnos sus comentarios.
Nota:
La información de este artículo se refiere a la actualización de una extensión de Visual Studio 2022 para trabajar con Visual Studio 2026.
Para obtener información sobre cómo actualizar una extensión de Visual Studio 2019 para que funcione con Visual Studio 2022 o Visual Studio 2026, cambie a la versión de Visual Studio 2022 de esta página con la lista desplegable de versiones, justo encima de la tabla de contenido.
Para instalar y probar la extensión:
Instale la versión más reciente de Visual Studio 2026.
Vaya al Administrador de extensiones.
Use la función Search para buscar la extensión.
Instálelo y confirme que funciona según lo previsto.
Si la extensión es msi, es posible que tenga que modificar el instalador para permitir la instalación de extensiones de Visual Studio 2022 en Visual Studio 2026.
Por ahora, no hay instrucciones para crear extensiones específicamente para Visual Studio 2026. Sin embargo, puede probar y usar extensiones de Visual Studio 2022 con Visual Studio 2026
Cambios críticos
Se ha quitado el IntegratedShell destino de instalación. Si la extensión tiene como destino IntegratedShell, el valor de InstallationTarget en el manifiesto VSIX debe actualizarse al destino Microsoft.VisualStudio.Community. Para comprobar o cambiar el InstallationTarget, abra el manifiesto VSIX en el diseñador y seleccione Objetivos de Instalación. Puede abrir el .vsixmanifest archivo en el editor de texto XML para inspeccionar la InstallationTarget configuración.
Para obtener más información sobre los cambios importantes, vea Cambios importantes para la extensibilidad de Visual Studio.
Comentarios y informes de problemas
Si tiene problemas con las extensiones en Visual Studio 2026, informe del problema aquí e incluya una referencia al ticket.
Importante
El consejo de este artículo puede guiar a los desarrolladores en la actualización de extensiones que requieren cambios importantes para funcionar tanto en Visual Studio 2019 como en Visual Studio 2022 o posterior. En esos casos, recomendamos que tengas dos proyectos VSIX y compilación condicional.
Muchas extensiones funcionarán en Visual Studio 2019 y Visual Studio 2022 (o posterior) con cambios menores que no requerirán seguir los consejos para modernizar la extensión en este artículo. Pruebe la extensión en Visual Studio 2022 y evalúe qué opción es la mejor para la extensión.
Para obtener información sobre cómo actualizar una extensión de Visual Studio 2022 para trabajar con Visual Studio 2026, cambie a la versión más reciente de esta página mediante la lista desplegable de versiones, justo encima de la tabla de contenido.
Visual Studio 2022 es una aplicación de 64 bits y presenta algunos cambios importantes en el SDK de Visual Studio. Este artículo le guía por los pasos necesarios para que la extensión funcione con la versión preliminar actual de Visual Studio 2022. La extensión puede estar lista para que los usuarios se instalen antes de que Visual Studio 2022 alcance la disponibilidad general.
Instalar Visual Studio y compilar extensiones
Instale Visual Studio 2022 desde descargas de Visual Studio 2022.
Extensiones escritas en un lenguaje .NET
El SDK de Visual Studio que tiene como destino Visual Studio 2022 para extensiones administradas se encuentra exclusivamente en NuGet:
- El metapaquete Microsoft.VisualStudio.Sdk (versiones 17.x) incluye la mayoría o todos los ensamblados de referencia que necesitará.
- Se debe hacer referencia al paquete Microsoft.VSSDK.BuildTools (versiones 17.x) desde el proyecto VSIX para que pueda compilar un VSIX compatible con Visual Studio 2022.
Incluso si no hace referencia a ningún cambio importante, las extensiones deben compilarse con la plataforma Any CPU o x64 . La plataforma x86 no es compatible con el proceso de 64 bits en Visual Studio 2022.
Extensiones escritas en C++
El SDK de Visual Studio para extensiones compiladas con C++ está disponible con el SDK de Visual Studio instalado, como de costumbre.
Incluso si no hace referencia a ningún cambio importante, las extensiones deben compilarse específicamente en el SDK de Visual Studio 2022 y para AMD64.
Extensiones con código en ejecución
Las extensiones con código en ejecución deben compilarse específicamente para Visual Studio 2022. Visual Studio 2022 no cargará ninguna extensión destinada a una versión anterior de Visual Studio.
Obtenga información sobre cómo migrar las extensiones para versiones anteriores de Visual Studio a Visual Studio 2022:
- Modernice los proyectos.
- Refactorice el código fuente en un proyecto compartido para permitir la compatibilidad con Visual Studio 2022 y versiones anteriores.
- Agregue un proyecto VSIX destinado a Visual Studio 2022 y una tabla de reasignación de paquetes o ensamblados.
- Realice los ajustes de código necesarios.
- Pruebe la extensión de Visual Studio 2022.
- Publique la extensión de Visual Studio 2022.
Extensiones sin código en ejecución
Las extensiones que no contienen ningún código en ejecución (por ejemplo, plantillas de proyecto o elemento) no necesitan seguir los pasos anteriores, incluida la creación de dos VSIX distintos.
En su lugar, modifique el vsix para que su source.extension.vsixmanifest archivo declare dos destinos de instalación:
<Installation>
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[15.0,17.0)">
<ProductArchitecture>x86</ProductArchitecture>
</InstallationTarget>
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)">
<ProductArchitecture>amd64</ProductArchitecture>
</InstallationTarget>
</Installation>
Puede omitir los pasos de este artículo sobre el uso de proyectos compartidos y varios VSIX. Puede continuar con las pruebas.
Nota:
Si va a crear una nueva extensión de Visual Studio con Visual Studio 2022 y también quiere tener como destino Visual Studio 2019 o una versión anterior, consulte esta guía.
Tareas de MSBuild
Si crea tareas de MSBuild, tenga en cuenta que en Visual Studio 2022, es probable que se carguen en un proceso de MSBuild.exe de 64 bits. Si la tarea requiere que se ejecute un proceso de 32 bits, consulte Configuración de destinos y tareas para asegurarse de que MSBuild carga la tarea en un proceso de 32 bits.
Modernización del proyecto VSIX
Antes de agregar compatibilidad con Visual Studio 2022 a la extensión, se recomienda encarecidamente limpiar y modernizar el proyecto existente:
Reemplace las referencias directas del ensamblado del SDK de Visual Studio por elementos
PackageReference.-<Reference Include="Microsoft.VisualStudio.OLE.Interop" /> +<PackageReference Include="Microsoft.VisualStudio.OLE.Interop" Version="..." />Sugerencia
Puede reemplazar muchas referencias de ensamblado por solo una
PackageReferenceinstancia del metapaquete:-<Reference Include="Microsoft.VisualStudio.OLE.Interop" /> -<Reference Include="Microsoft.VisualStudio.Interop" /> -<Reference Include="Microsoft.VisualStudio.Interop.8.0" /> +<PackageReference Include="Microsoft.VisualStudio.Sdk" Version="..." />Asegúrese de elegir las versiones del paquete que coincidan con la versión mínima de Visual Studio que tiene como destino.
Algunos ensamblados que no son exclusivos del SDK de Visual Studio (por ejemplo, Newtonsoft.Json.dll) podrían haberse detectado a través de una referencia sencilla <Reference Include="Newtonsoft.Json" /> antes de Visual Studio 2022. Pero en Visual Studio 2022, requieren una referencia de paquete en su lugar. La razón es que algunos directorios de tiempo de ejecución y SDK de Visual Studio se han quitado de la ruta de búsqueda de ensamblado predeterminada en MSBuild.
Al cambiar de referencias directas de ensamblado a referencias de paquete NuGet, es posible que seleccione referencias de ensamblado adicionales y paquetes de analizador porque NuGet instala automáticamente el cierre transitivo de dependencias. Esto suele ser aceptable, pero podría dar lugar a advertencias adicionales durante la compilación. Trabaje con estas advertencias y resuelva tanto como pueda. Considere la posibilidad de usar regiones en código #pragma warning disable <id> para suprimir advertencias que no se pueden resolver.
Uso de proyectos compartidos para varios objetivos
Los proyectos compartidos son un tipo de proyecto que se introdujo en Visual Studio 2015. Los proyectos compartidos en Visual Studio permiten que los archivos de código fuente se compartan entre varios proyectos y compilen de forma diferente mediante símbolos de compilación condicional y conjuntos únicos de referencias.
Visual Studio 2022 requiere un conjunto distinto de ensamblados de referencia de todas las versiones anteriores de Visual Studio. Por lo tanto, se recomienda usar proyectos compartidos para tener como destino convenientemente la extensión a Visual Studio 2022, versiones anteriores y versiones posteriores. Esta técnica le proporcionará código compartido pero referencias distintas.
En el contexto de las extensiones de Visual Studio, podría tener un proyecto VSIX para Visual Studio 2022 y versiones posteriores, y un proyecto VSIX para Visual Studio 2019 y versiones anteriores. Cada uno de estos proyectos contendrá solo una source.extension.vsixmanifest instancia y el paquete hace referencia al SDK 16.x o al SDK 17.x. Estos proyectos VSIX también tendrían una referencia de proyecto compartido a un nuevo proyecto compartido que hospedará todo el código fuente que se puede compartir entre las dos versiones de Visual Studio.
En esta sección se supone que ya tiene un proyecto VSIX destinado a Visual Studio 2019 y que desea que la extensión funcione en Visual Studio 2022.
Puede completar todos estos pasos mediante Visual Studio 2019:
Si aún no lo ha hecho, modernice los proyectos para facilitar los pasos posteriores en este proceso de actualización.
Agregue un nuevo proyecto compartido a la solución para cada proyecto existente que haga referencia al SDK de Visual Studio. Haga clic con el botón derecho en la solución y seleccione Agregar>nuevo proyecto.
En el cuadro de diálogo Agregar un nuevo proyecto , busque proyecto compartido y, a continuación, seleccione la plantilla Proyecto compartido .
Agregue una referencia de cada proyecto de referencia del SDK de Visual Studio a su homólogo de proyecto compartido.
Mueva todo el código fuente (incluidos los archivos .cs y .resx ) de cada proyecto de referencia del SDK de Visual Studio a su homólogo de proyecto compartido. Deje el archivo source.extension.vsixmanifest en el proyecto VSIX.
Mueva archivos de metadatos (por ejemplo, notas de la versión, licencia e iconos) y archivos VSCT a un directorio compartido. A continuación, agréguelos como archivos vinculados al proyecto VSIX. Tenga en cuenta que el directorio compartido es independiente del proyecto compartido.
Para los archivos de metadatos, establezca Acción de compilación en Contenido. Establezca Incluir en VSIX en Verdadero.
Para los archivos VSCT, establezca Acción de compilación en VSCTCompile. Establezca Include in VSIX en False.
Si Visual Studio se queja de que no se admite esta configuración, puede cambiar manualmente la acción de compilación descargando el proyecto y cambiando
ContentaVSCTCompile:-<Content Include="..\SharedFiles\VSIXProject1Package.vsct"> - <Link>VSIXProject1Package.vsct</Link> -</Content> +<VSCTCompile Include="..\SharedFiles\VSIXProject1Package.vsct"> + <Link>VSIXProject1Package.vsct</Link> + <ResourceName>Menus.ctmenu</ResourceName> +</VSCTCompile>
Compile el proyecto para confirmar que no ha introducido ningún error.
El proyecto ya está listo para agregar compatibilidad con Visual Studio 2022.
Agrega un objetivo de Visual Studio 2022
En esta sección se supone que ha completado los pasos para factorizar la extensión de Visual Studio con proyectos compartidos.
Agregue compatibilidad con Visual Studio 2022 a la extensión mediante los pasos siguientes. Puede completarlos con Visual Studio 2019.
Agregue un nuevo proyecto VSIX a la solución. Este proyecto tendrá como destino Visual Studio 2022. Quite cualquier código fuente que se incluye con la plantilla, pero mantenga el archivo source.extension.vsixmanifest .
En su nuevo proyecto VSIX, agregue una referencia al mismo proyecto compartido al que hace referencia el VSIX que tiene como destino Visual Studio 2019.
Compruebe que el nuevo proyecto VSIX se compila correctamente. Es posible que tenga que agregar referencias para que coincidan con el proyecto VSIX original para resolver los errores del compilador.
Para las extensiones administradas de Visual Studio, actualice las referencias de paquetes de 16.x (o anteriores) a las versiones 17.x en el archivo de proyecto orientado a Visual Studio 2022. Use el Administrador de paquetes NuGet o edite directamente el archivo del proyecto:
-<PackageReference Include="Microsoft.VisualStudio.SDK" Version="16.0.206" /> +<PackageReference Include="Microsoft.VisualStudio.SDK" Version="17.0" /> -<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="16.10.32" /> +<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="17.0" />Las versiones que se muestran en el código anterior son solo para demostración. En el código, use versiones disponibles en el sitio web de NuGet.
En muchos casos, los identificadores de paquete han cambiado. Para obtener una lista de los cambios en Visual Studio 2022, consulte la tabla de asignación de paquetes o ensamblados.
Las extensiones escritas en C++ aún no tienen un SDK disponible con el que compilar.
En el caso de los proyectos de C++, las extensiones deben compilarse para AMD64. Para las extensiones administradas, considere cambiar su proyecto de compilar para AnyCPU a dirigirse a x64. Ese cambio garantiza que, en Visual Studio 2022, la extensión siempre se carga en un proceso de 64 bits. Cualquier CPU también está bien, pero podría generar advertencias si hace referencia a archivos binarios nativos x64 solo.
Cualquier dependencia que pueda tener la extensión en un módulo nativo tendrá que actualizarse desde una imagen x86 a una imagen AMD64.
Edite el archivo source.extension.vsixmanifest para reflejar el destino Visual Studio 2022. Establezca la
<InstallationTarget>etiqueta para indicar Visual Studio 2022. Establezca elProductArchitectureelemento para indicar una carga AMD64.<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)"> <ProductArchitecture>amd64</ProductArchitecture> </InstallationTarget>Importante
En Visual Studio 2019, el diseñador de este archivo no expone el nuevo
ProductArchitectureelemento. Debe usar un editor XML para realizar este cambio. Para acceder al editor XML, vaya al Explorador de soluciones y seleccione el comando Abrir con .El
ProductArchitectureelemento es crítico. Visual Studio 2022 no instalará la extensión sin ella.Elemento Importancia Description ProductArchitecturex86,amd64Las plataformas que admite este VSIX. No distingue mayúsculas de minúsculas. Use una plataforma por elemento y un elemento por InstallationTargetinstancia. Para las versiones de producto inferiores a 17.0, el valor predeterminado esx86y se puede omitir. Para las versiones 17.0 y posteriores del producto, este elemento es necesario y no hay ningún valor predeterminado. Para Visual Studio 2022, el único contenido válido para este elemento esamd64.Realice cualquier otro ajuste necesario en source.extension.vsixmanifest para que coincida con el que tiene como destino Visual Studio 2019 (si existe).
Si va a publicar dos versiones de la extensión que tienen como destino una versión diferente de Visual Studio, asegúrese de que el identificador de VSIX en el
Identityelemento del manifiesto es diferente para cada extensión.
En este momento, tiene un archivo de extensión VSIX dirigido a Visual Studio 2022. Debe compilar su proyecto VSIX destinado a Visual Studio 2022 y resolver cualquier error de compilación que aparezca. Si no tiene interrupciones de compilación en su proyecto VSIX orientado a Visual Studio 2022, enhorabuena. Está listo para realizar pruebas.
Gestión de cambios disruptivos en la API
Los cambios importantes en la API pueden requerir actualizaciones en el código que se ejecutó en versiones anteriores de Visual Studio. Para obtener sugerencias sobre cómo actualizar el código, consulte Cambios importantes de la API en Visual Studio 2022.
Al adaptar el código, se recomienda usar la compilación condicional. Después, el código puede seguir admitiendo versiones anteriores de Visual Studio al agregar compatibilidad con Visual Studio 2022.
Una vez que haya construido la extensión dirigida a Visual Studio 2022, proceda con las pruebas.
Uso de símbolos de compilación condicional
Si desea usar el mismo código fuente, incluso el mismo archivo, para Visual Studio 2022 y versiones anteriores, es posible que tenga que usar la compilación condicional. A continuación, puede bifurcar el código para adaptarse a los cambios importantes. La compilación condicional es una característica de los lenguajes C#, Visual Basic y C++. Se puede usar para compartir la mayoría del código, al tiempo que se adapta a las API divergentes en lugares específicos.
Para obtener más información sobre el uso de directivas de preprocesador y símbolos de compilación condicional, consulte Directivas de preprocesador de C#.
Los proyectos que tienen como destino versiones anteriores de Visual Studio necesitarán un símbolo de compilación condicional. A continuación, este símbolo se puede usar para bifurcar el código para usar las distintas API. Puede establecer el símbolo de compilación condicional en la página de propiedades del proyecto:
Asegúrese de establecer el símbolo de compilación para Todas las configuraciones. De forma predeterminada, el símbolo que escriba puede aplicarse solo a una configuración.
Técnicas de C#
Puede usar el símbolo de compilación como una directiva de preprocesador (#if), como se muestra en el código siguiente. A continuación, puede bifurcar el código para tratar un cambio importante entre las versiones de Visual Studio.
Guid myGuid = new Guid("{633FBA02-719B-40E7-96BF-0899767CD104}");
uint myFlags = 0;
IVsShell shell = await AsyncServiceProvider.GlobalProvider.GetServiceAsync<SVsShell, IVsShell>();
#if Dev16
shell.LoadUILibrary(myGuid, myFlags, out uint ptrLib);
#else
shell.LoadUILibrary(myGuid, myFlags, out IntPtr ptrLib);
#endif
En algunos casos, puede usar var para evitar asignar un nombre al tipo y evitar la necesidad de #if regiones. El fragmento de código anterior también se puede escribir como:
Guid myGuid = new Guid("{633FBA02-719B-40E7-96BF-0899767CD104}");
uint myFlags = 0;
IVsShell shell = await AsyncServiceProvider.GlobalProvider.GetServiceAsync<SVsShell, IVsShell>();
shell.LoadUILibrary(myGuid, myFlags, out var ptrLib);
Cuando esté utilizando la sintaxis #if, observe cómo puede usar la lista desplegable para el contexto del servicio de lenguaje y cambiar el resaltado de sintaxis. La otra lista desplegable ayuda al servicio de lenguaje a centrar la atención en una versión de Visual Studio de destino para esta extensión frente a otra.
Técnicas de uso compartido de XAML
XAML no tiene preprocesador para permitir la personalización del contenido en función de los símbolos del preprocesador. Es posible que tengas que copiar y mantener dos páginas XAML cuyo contenido difiere entre Visual Studio 2022 y versiones anteriores.
En algunos casos, es posible que una referencia a un tipo que exista en ensamblados distintos en Visual Studio 2022 y versiones anteriores todavía se pueda representar en un archivo XAML. Quite el espacio de nombres que hace referencia al ensamblado:
-xmlns:vsui="clr-namespace:Microsoft.VisualStudio.PlatformUI;assembly=Microsoft.VisualStudio.Shell.14.0"
-Value="{DynamicResource {x:Static vsui:TreeViewColors.SelectedItemActiveBrushKey}}"
+Value="{DynamicResource TreeViewColors.SelectedItemActiveBrushKey}"
Prueba tu extensión
Para probar una extensión destinada a Visual Studio 2022, debe tener instalado Visual Studio 2022. No podrá ejecutar extensiones de 64 bits en versiones anteriores de Visual Studio.
Puede usar Visual Studio 2022 para compilar y probar las extensiones si tienen como destino Visual Studio 2022 o una versión anterior. Al abrir un proyecto VSIX desde Visual Studio 2022, se abre una instancia experimental de Visual Studio.
Se recomienda encarecidamente probar con cada versión de Visual Studio que quiera que admita la extensión.
Publica tu extensión
Ha agregado una configuración de destino de Visual Studio 2022 a su extensión y la ha probado. Ahora está listo para publicar la extensión para que el mundo la admire.
Visual Studio Marketplace
Publicar la extensión en Visual Studio Marketplace es una excelente manera de obtener nuevos usuarios para buscar e instalar la extensión. Tanto si la extensión tiene como destino exclusivamente Visual Studio 2022 como si se dirige también a versiones anteriores, el Marketplace le admite.
En el futuro, Marketplace le permitirá cargar varios VSIX en una sola lista de Marketplace. Después, puede cargar un VSIX dirigido a Visual Studio 2022 y otro VSIX para una versión anterior de Visual Studio. Los usuarios obtendrán automáticamente el VSIX adecuado para la versión de Visual Studio que han instalado, cuando usen el administrador de extensiones de Visual Studio.
Instalador personalizado
Si compila un archivo MSI o EXE para instalar la extensión y generar vsixinstaller.exe para instalar (parte de) la extensión, sepa que se ha actualizado el instalador de VSIX en Visual Studio 2022. Los desarrolladores deben usar la versión del instalador VSIX que viene con Visual Studio 2022 para instalar extensiones en esa versión de Visual Studio.
El instalador VSIX de Visual Studio 2022 también instala extensiones aplicables destinadas a versiones anteriores de Visual Studio que existen con Visual Studio 2022 en la misma máquina.
Recurso compartido de red
Puede compartir la extensión a través de una LAN o cualquier otra manera. Si tiene como destino Visual Studio 2022 y versiones anteriores, debe compartir sus varios VSIX individualmente. Asígneles nombres de archivo (o colóquelos en carpetas únicas) que ayuden a los usuarios a saber qué VSIX instalar en función de la versión de Visual Studio que han instalado.
Dependencias
Si su VSIX especifica otros VSIX como dependencias a través del elemento <dependency>, cada VSIX referenciado debe instalarse en los mismos destinos y arquitecturas de producto que su VSIX. Si un VSIX dependiente no admite la instalación de destino de Visual Studio, se producirá un error en VSIX.
Es correcto que el VSIX dependiente admita más destinos y arquitecturas que los suyos, pero no menos. Esta restricción significa que el enfoque de implementación y distribución de un VSIX con dependencias debe reflejar el de sus dependientes.
Preguntas y respuestas
P: Mi extensión no requiere ningún cambio de interoperabilidad porque solo proporciona datos (por ejemplo, plantillas). ¿Puedo crear una sola extensión que también incluya Visual Studio 2022?
R: ¡Sí! Consulta Extensiones sin ejecutar código para obtener información sobre esto.
P: Una dependencia de NuGet está incorporando antiguos ensamblados de interoperabilidad y causando que clases entren en conflicto. ¿Qué debo hacer?
A: Agregue la siguiente línea a su archivo .csproj para evitar duplicación de ensamblados.
<PackageReference Include="<Name of offending assembly>" ExcludeAssets="compile" PrivateAssets="all" />
Este código impedirá que las referencias de paquete importen la versión anterior del ensamblado desde otras dependencias.
P: Mis comandos y teclas de acceso rápido dejaron de funcionar en Visual Studio después de cambiar mis archivos de origen a un proyecto compartido. ¿Qué debo hacer?
A: El Paso 2.4 del ejemplo del Optimizador de Imágenes muestra cómo agregar archivos VSCT como elementos vinculados para que se compilen en el archivo VSCT.
Contenido relacionado
Siga un ejemplo paso a paso, ImageOptimizer, con vínculos al proyecto y cambios de código para cada paso.