Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este guia mostrará todas as etapas necessárias para adicionar suporte ao Visual Studio 2022 enquanto mantém o suporte ao Visual Studio 2019 usando a extensão Image Optimizer como um estudo de caso.
Este é destinado a ser um guia completo com links git commit para cada etapa, mas você está livre para ver o PR finalizado aqui: https://github.com/madskristensen/ImageOptimizer/pull/46.
Também temos amostras adicionais no final deste guia.
Etapa 1 - Modernizar o projeto
Veja Modernizar o projeto.
Primeiro, atualizamos o VSIX e o projeto de teste de unidade para .NET 4.7.2 nas propriedades dos projetos.
O Image Optimizer fez referência a alguns pacotes personalizados antigos de 14.* e 15.*, em vez disso, instalaremos o Microsoft.VisualStudio.Sdk pacote NuGet 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 construção do projeto é concluída com sucesso e recebemos alguns avisos relacionados com threads. 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
Consulte 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 remover
source.extension.vsixmanifest.git commit 73ba920 - Movendo arquivos
git commit d5e36b2 - Adicionando ferramentas/bibliotecas externas
- Para este projeto, precisamos mover o ícone de extensão, arquivo VSCT e ferramentas externas para nossa nova pasta
ImageOptimizer\Resources. Copie-os para a pasta compartilhada e remova-os do projeto VSIX. - Adicionou-os novamente como itens vinculados e, se os itens já estiverem vinculados, os itens podem permanecer como estão (licença, por exemplo).
- Valide se a Ação de compilação e outras propriedades estão definidas corretamente nos arquivos vinculados adicionados selecionando cada um e verificando a janela da ferramenta de propriedades. Para o nosso projeto, tivemos que definir o seguinte:
Defina
icon.pngBuild Action comoContente marque Include in VSIX comotrueConfigure a Ação de Compilação de
ImageOptimizer.vsctparaVSCTComplilee defina para incluir no VSIX comofalseDefina toda a ação de compilação dos arquivos em
Resources\ToolscomoContente marque Incluir no VSIX comotrue
Além disso,
ImageOptimizer.csé uma dependência deImageOptimizer.vsct, para isso temos que 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 da ferramenta de propriedades impedir que você defina uma Ação de compilação específica, você poderá modificar manualmente o csproj conforme feito acima e definir a Ação de compilação conforme necessário.
- Para este projeto, precisamos mover o ícone de extensão, arquivo VSCT e ferramentas externas para nossa nova pasta
Crie seu projeto para validar suas alterações e corrigir quaisquer erros/problemas. Consulte a secção Perguntas Mais Frequentes para problemas comuns.
Etapa 3 - Adicionar um projeto VSIX do Visual Studio 2022
Veja Adicionar alvo do Visual Studio 2022.
Adicione um novo projeto VSIX à sua solução.
Remova qualquer código-fonte adicional no novo projeto, exceto
source.extension.vsixmanifest.
Adicione uma referência ao seu projeto compartilhado.
Adicione os arquivos vinculados do seu projeto VSIX do Visual Studio 2019 e valide se as propriedades "Build Action" e "Include in VSIX" correspondem. Além disso, copie seu arquivo
source.extension.vsixmanifest, vamos modificá-lo mais tarde para oferecer suporte ao Visual Studio 2022.
Uma tentativa de compilação mostra que nos falta uma referência a
System.Windows.Forms. Basta adicioná-lo ao nosso projeto Visual Studio 2022 e reconstruir.+ <Reference Include="System.Windows.Forms" />Atualiza as referências de pacote
Microsoft.VisualStudio.SDKeMicrosoft.VSSDK.BuildToolspara as versões do Visual Studio 2022.Observação
Estas são as versões mais recentes disponíveis quando este guia foi criado. Recomenda-se que 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 o ficheiro
source.extension.vsixmanifestpara refletir a compatibilidade com o Visual Studio 2022.Defina a etiqueta
<InstallationTarget>para refletir o Visual Studio 2022 e indicar um pacote 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" />
E já está!
Com isso, a criação agora produz VSIXes do Visual Studio 2019 e do Visual Studio 2022.
Outras amostras
-
Ferramentas ProPower
- PeekF1
- Permite espreitar um navegador da Web com informações de ajuda sobre a classe/objeto selecionado.
- FixMixedTabs
- Verifica os seus documentos e substitui separadores por espaços ou vice versa.
- PeekF1
Próximos passos
Prepare-se para atualizar sua extensão lendo este guia do início ao fim.