ImageOptimizer – Uppdatera ett Visual Studio-tillägg steg för steg
Den här guiden visar alla steg som krävs för att lägga till Visual Studio 2022-stöd samtidigt som Visual Studio 2019-stöd bibehålls med hjälp av imageoptimerartillägget som en fallstudie.
Detta är tänkt att vara en grundlig guide med git-incheckningslänkar till varje steg, men du kan se den färdiga PR:en här: https://github.com/madskristensen/ImageOptimizer/pull/46
.
Vi har också ytterligare exempel i slutet av den här guiden.
Steg 1 – Modernisera projektet
Först höjer vi VSIX- och enhetstestprojektet till .NET 4.7.2 på egenskapssidan i projekten.
Image Optimizer refererade till några gamla anpassade 14.* och 15.* paket, i stället installerar vi Microsoft.VisualStudio.Sdk
NuGet-paketet som konsoliderar alla våra nödvändiga referenser.
- <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>
Projektbygget lyckas och vi får några trådningsvarningar. Vi åtgärdar dessa varningar genom att klicka på ctrl
och .
och använda intellisense för att lägga till de saknade trådväxlingslinjerna.
Steg 2 – Omstrukturera källkoden till ett delat projekt
Se Delade projekt.
Stöd för Visual Studio 2022 kräver att du lägger till ett nytt delat projekt som innehåller tilläggets källkod som delas mellan Visual Studio 2019- och Visual Studio 2022 VSIX-projekten.
Lägga till ett nytt delat projekt i din lösning
Lägg till en referens till det delade projektet i ditt VSIX-projekt.
Flytta källkodsfilerna (cs, xaml, resx) till det nya delade projektet förutom för följande:
source.extension.vsixmanifest
- Tilläggsmetadatafiler (ikoner, licenser, viktig information osv.)
- VSCT-filer
- Länkade filer
- Externa verktyg eller bibliotek som måste ingå i VSIX
Flytta nu alla metadata, VSCT-filer, länkade filer och externa verktyg/bibliotek till en delad plats och lägg till dem som länkade objekt i VSIX-projektet. Ta inte bort
source.extension.vsixmanifest
.git commit 73ba920 – Flytta filer
git commit d5e36b2 – Lägga till externa verktyg/bibliotek
- För det här projektet måste vi flytta tilläggsikonen, VSCT-filen och externa verktyg till vår nya mapp
ImageOptimizer\Resources
. Kopiera dem till den delade mappen och ta bort dem från VSIX-projektet. - De har lagts tillbaka som länkade objekt och om objekt redan är länkade kan de förbli som de är (till exempel licens).
- Kontrollera att build-åtgärden och andra egenskaper har angetts korrekt i de tillagda länkade filerna genom att välja var och en och kontrollera fönstret för egenskapsverktyget. För vårt projekt var vi tvungna att ange följande:
Ange
icon.png
byggåtgärd tillContent
och markera Inkludera i VSIX tilltrue
Ställ in
ImageOptimizer.vsct
kompileringsåtgärd påVSCTComplile
och Inkludera i VSIX somfalse
Ställ in alla byggåtgärder för filerna under
Resources\Tools
tillContent
och markera 'Inkludera i VSIX' tilltrue
Dessutom är
ImageOptimizer.cs
beroende avImageOptimizer.vsct
, för detta måste vi lägga till det här beroendet manuellt i csproj-filen:- <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>
Om egenskapsverktygets fönster hindrar dig från att ange en specifik byggåtgärd kan du manuellt ändra csproj enligt ovan och ange byggåtgärden efter behov.
- För det här projektet måste vi flytta tilläggsikonen, VSCT-filen och externa verktyg till vår nya mapp
Skapa projektet för att verifiera dina ändringar och åtgärda eventuella fel/problem. Kolla avsnittet vanliga frågor och svar för vanliga problem.
Steg 3 – Lägga till ett Visual Studio 2022 VSIX-projekt
Se Lägg till Visual Studio 2022-mål.
Lägg till ett nytt VSIX-projekt i din lösning.
Ta bort eventuell ytterligare källkod i det nya projektet förutom
source.extension.vsixmanifest.
Lägg till en referens till ditt delade projekt.
Lägg till de länkade filerna från ditt Visual Studio 2019 VSIX-projekt och verifiera att deras egenskaper "Build Action" och "Include in VSIX" matchar. Kopiera även över din
source.extension.vsixmanifest
fil, vi kommer att ändra den senare för att stödja Visual Studio 2022.Ett byggförsök visar att vi saknar en referens till
System.Windows.Forms
. Lägg bara till det i vårt Visual Studio 2022-projekt och återskapa det.+ <Reference Include="System.Windows.Forms" />
Uppgradera
Microsoft.VisualStudio.SDK
ochMicrosoft.VSSDK.BuildTools
paketreferenser till Visual Studio 2022-versionerna.Not
Det här är de senaste versionerna som är tillgängliga när den här guiden skapades. Vi rekommenderar att du får de senaste tillgängliga versionerna.
-<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" />
Redigera din
source.extension.vsixmanifest
-fil för att återspegla Visual Studio 2022.Ange taggen
<InstallationTarget>
så att den återspeglar Visual Studio 2022 och anger en amd64-nyttolast:<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)"> <ProductArchitecture>amd64</ProductArchitecture> </InstallationTarget>
Ändra förutsättningen så att endast Visual Studio 2022 och senare inkluderas:
- <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" />
Och vi är klara!
Med detta skapar byggnaden nu både Visual Studio 2019 och Visual Studio 2022 VSIXes.
Andra exempel
-
ProPower Tools
- PeekF1
- Tillåter att du tittar i en webbläsare med hjälpinformation om den valda klassen/objektet.
- FixMixedTabs
- Söker igenom dina dokument och ersätter flikar med blanksteg eller vice versa
- PeekF1
Nästa steg
Förbered dig på att uppdatera tillägget genom att läsa den här från-början-till-slut-guiden.