Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este guia mostrará todas as etapas necessárias para adicionar suporte ao Visual Studio 2022, mantendo o suporte do Visual Studio 2019 usando a extensão otimizador de imagem como um estudo de caso.
Este deve ser um guia completo com links de confirmação do git para cada etapa, mas você pode ver a PR finalizada aqui: https://github.com/madskristensen/ImageOptimizer/pull/46.
Também temos exemplos adicionais no final deste guia.
Etapa 1 – Modernizar o projeto
Confira Modernizar o projeto.
Primeiro, elevamos o projeto de teste de unidade e VSIX para o .NET 4.7.2 na página de propriedades dos projetos:

O Otimizador de Imagem referenciou alguns pacotes 14.* e 15.* personalizados antigos, em vez disso, instalaremos o pacote NuGet Microsoft.VisualStudio.Sdk que consolida todas as nossas referências necessárias.
- <ItemGroup>
- <PackageReference Include="Madskristensen.VisualStudio.SDK">
- <Version>14.0.0-beta4</Version>
- </PackageReference>
- <PackageReference Include="Microsoft.VSSDK.BuildTools">
- <Version>15.8.3247</Version>
- <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
- <PrivateAssets>all</PrivateAssets>
- </PackageReference>
- </ItemGroup>
+ <ItemGroup>
+ <PackageReference Include="Microsoft.VisualStudio.SDK">
+ <Version>16.9.31025.194</Version>
+ </PackageReference>
+ </ItemGroup>
A criação do projeto foi bem-sucedida e recebemos alguns avisos de threading. Corrigimos esses avisos clicando em ctrl e ., e usando o Intellisense para adicionar as linhas de comutação de thread ausentes.
Etapa 2 – Refatorar o código-fonte em um projeto compartilhado
Confira Projetos compartilhados.
O suporte ao Visual Studio 2022 requer a adição de um novo projeto compartilhado que conterá o código-fonte da extensão que será compartilhado entre os projetos vsIX do Visual Studio 2019 e do Visual Studio 2022.
Adicionar um novo projeto compartilhado à sua solução

Adicione uma referência ao projeto compartilhado ao seu projeto VSIX.
Mova seus arquivos de código-fonte (cs, xaml, resx) para o novo projeto compartilhado exceto para o seguinte:
source.extension.vsixmanifest- Arquivos de metadados de extensão (ícones, licenças, notas de versão etc.)
- Arquivos VSCT
- Arquivos vinculados
- Ferramentas ou bibliotecas externas que precisam ser incluídas no VSIX

Agora mova todos os metadados, arquivos VSCT, arquivos vinculados e ferramentas/bibliotecas externas para um local compartilhado e adicione-os novamente como itens vinculados ao projeto VSIX. Não remova o
source.extension.vsixmanifest.git commit 73ba920 – Mover arquivos
git commit d5e36b2 – Adicionando ferramentas/bibliotecas externas
- Para este projeto, precisamos mover o ícone de extensão, o arquivo VSCT e as ferramentas externas para nossa nova pasta
ImageOptimizer\Resources. Copie-os para a pasta compartilhada e remova-os do projeto VSIX. - Adicionados novamente como itens vinculados e se os itens já estiverem vinculados, os itens poderão permanecer como estão (licença, por exemplo).
- Valide se a Ação de Build e outras propriedades são definidas corretamente nos arquivos vinculados adicionados selecionando cada uma delas e verificando a janela de ferramentas de propriedades. Para nosso projeto, tivemos que definir o seguinte:
Defina a ação de build
icon.pngcomoContente marque a opção de incluir no VSIX paratrueDefina a ação de compilação
ImageOptimizer.vsctcomoVSCTComplilee inclua no VSIX comofalseDefina todas as Ações de Compilação dos arquivos em
Resources\ToolscomoContente marque a opção Incluir no VSIX comotrue
Além disso,
ImageOptimizer.csé uma dependência deImageOptimizer.vsct, para isso, precisamos adicionar manualmente essa dependência ao arquivo csproj:- <Content Include="..\SharedFiles\ImageOptimizer.vsct"> - <Link>ImageOptimizer.vsct</Link> - </Content> - <Compile Include="..\SharedFiles\ImageOptimizer.cs"> - <Link>ImageOptimizer.cs</Link> - </Compile> + <VSCTCompile Include="..\SharedFiles\ImageOptimizer.vsct"> + <ResourceName>Menus.ctmenu</ResourceName> + <Generator>VsctGenerator</Generator> + <LastGenOutput>..\SharedFiles\ImageOptimizer.cs</LastGenOutput> + </VSCTCompile> + <Compile Include="..\SharedFiles\ImageOptimizer.cs"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>..\SharedFiles\ImageOptimizer.vsct</DependentUpon> + </Compile>Se a janela de ferramentas de propriedades impedir que você defina uma Ação de Build específica, você poderá modificar manualmente o csproj conforme feito acima e definir a Ação de Build conforme necessário.
- Para este projeto, precisamos mover o ícone de extensão, o arquivo VSCT e as ferramentas externas para nossa nova pasta
Crie seu projeto para validar suas alterações e corrigir erros/problemas. Verifique a seção Perguntas frequentes para problemas comuns.
Etapa 3 – Adicionar um projeto VSIX do Visual Studio 2022
Confira Adicionar alvo do Visual Studio 2022.
Adicione um novo projeto VSIX à sua solução.
Remover qualquer código-fonte adicional no novo projeto, exceto para
source.extension.vsixmanifest.
Adicione uma referência ao seu projeto compartilhado.
Adicione os arquivos vinculados do projeto VSIX do Visual Studio 2019 e valide se as propriedades "Ação de Build" e "Incluir no VSIX" correspondem. Além disso, copie seu arquivo de
source.extension.vsixmanifest, vamos modificá-lo mais tarde para dar suporte ao Visual Studio 2022.
Uma tentativa de compilação mostra que está faltando uma referência a
System.Windows.Forms. Basta adicioná-lo ao nosso projeto do Visual Studio 2022 e compilar novamente.+ <Reference Include="System.Windows.Forms" />Atualize as referências de pacote
Microsoft.VisualStudio.SDKeMicrosoft.VSSDK.BuildToolspara as versões do Visual Studio 2022.Nota
Estas são as versões mais recentes disponíveis quando este guia foi criado. É recomendável que você obtenha as versões mais recentes disponíveis.
-<PackageReference Include="Microsoft.VisualStudio.SDK" Version="16.0.206" /> +<PackageReference Include="Microsoft.VisualStudio.SDK" Version="17.0.0-preview-1-31216-1036" /> -<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="16.10.32" /> +<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="17.0.63-Visual Studio 2022-g3f11f5ab" />Edite seu arquivo
source.extension.vsixmanifestpara refletir o direcionamento do Visual Studio 2022.Defina a etiqueta
<InstallationTarget>para refletir o Visual Studio 2022 e indicar um payload amd64.<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)"> <ProductArchitecture>amd64</ProductArchitecture> </InstallationTarget>Modifique o pré-requisito para incluir apenas o Visual Studio 2022 e superior:
- <Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[15.0,)" DisplayName="Visual Studio core editor" /> + <Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[17.0,)" DisplayName="Visual Studio core editor" />
Terminamos!
Com isso, o build agora produz VSIXes para o Visual Studio 2019 e o Visual Studio 2022.
Outros exemplos
- ProPower Tools
- PeekF1
- Permite visualizar informações de ajuda em um navegador da Web sobre a classe/objeto selecionado.
- FixMixedTabs
- Examina os documentos e substitui as tabulações por espaços ou vice-versa
- PeekF1
Próximas etapas
Prepare-se para atualizar sua extensão lendo este guia do início ao fim.
