ImageOptimizer - 逐步更新 Visual Studio 擴充功能
本指南會顯示新增 Visual Studio 2022 支援所需的所有步驟,同時使用影像優化器擴充功能作為案例研究來維護 Visual Studio 2019 支援。
這是一份完整的指南,其中包含每個步驟的 git 認可連結,但您可以在這裡看到完成的 PR: https://github.com/madskristensen/ImageOptimizer/pull/46。
本指南結尾也有 其他範例 。
步驟 1 - 將項目現代化
請參閱 將項目現代化。
首先,我們會在專案的 [屬性] 頁面底下,將 VSIX 和單元測試項目顛簸至 .NET 4.7.2:
映射優化器參考了一些舊的自定義 14.* 和 15.* 套件,而是會安裝 Microsoft.VisualStudio.Sdk
NuGet 套件 ,以合併所有必要的參考。
- <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>
建置專案成功,我們會收到一些線程警告。 我們藉由單擊 ctrl
並使用 .
Intellisense 來新增遺漏的線程切換線,以修正這些警告。
步驟 2 - 將原始程式碼重構為共享專案
請參閱 共享專案。
支援 Visual Studio 2022 需要新增新的共享專案,其中包含將在 Visual Studio 2019 和 Visual Studio 2022 VSIX 專案之間共用的延伸模組原始程式碼。
將新的共享專案新增至您的方案
將共用項目的參考新增至 VSIX 專案。
將原始碼檔案 (cs、xaml、resx) 移至新的共享專案 ,但下列專案除外 :
source.extension.vsixmanifest
- 延伸模組元資料檔案(圖示、授權、版本資訊等)
- VSCT 檔案
- 連結的檔案
- 需要包含在 VSIX 中的外部工具或連結庫
現在,將所有元數據、VSCT 檔案、鏈接的檔案和外部工具/連結庫移至共用位置,並將其新增回 VSIX 專案做為連結專案。 請勿 移除
source.extension.vsixmanifest
。git commit d5e36b2 - 新增外部工具/連結庫
- 針對此項目,我們需要將延伸模組圖示、VSCT 檔案和外部工具移至新的資料夾
ImageOptimizer\Resources
。 將它們複製到共享資料夾,並從 VSIX 專案中移除它們。 - 將它們新增回為連結的專案,如果專案已經連結的專案可以維持不變(例如授權)。
- 藉由選取每個連結檔案並檢查屬性工具窗口,驗證 [建置動作] 和其他屬性在新增的鏈接檔案中正確設定。 針對我們的項目,我們必須設定下列專案:
將 [建置動作] 設定
icon.png
為 ,Content
並將 [包含在 VSIX] 中標示為true
將 [建置動作] 設定為 ,
VSCTComplile
並將 VSIX 中的 [包含] 設定ImageOptimizer.vsct
為false
將 下
Resources\Tools
檔案的所有建置動作設定為 ,Content
並將 VSIX 中標示為 [包含]true
此外,這是的
ImageOptimizer.vsct
相依性,ImageOptimizer.cs
因此我們必須手動將此相依性新增至 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>
如果屬性工具視窗無法設定特定的建置動作,您可以依照上述方式手動修改 csproj,並視需要設定建置動作。
- 針對此項目,我們需要將延伸模組圖示、VSCT 檔案和外部工具移至新的資料夾
建置您的項目來驗證您的變更,並修正任何錯誤/問題。 如需常見問題,請參閱常見問題一節。
步驟 3 - 新增 Visual Studio 2022 VSIX 專案
將新的 VSIX 專案新增至您的方案。
拿掉新專案中的任何其他原始程式碼,但除外
source.extension.vsixmanifest.
新增共用項目的參考。
從 Visual Studio 2019 VSIX 專案新增連結的檔案,並驗證其「建置動作」和「包含在 VSIX」屬性相符。
source.extension.vsixmanifest
此外,我們會在稍後修改檔案以支援Visual Studio 2022。嘗試建置會顯示遺漏的
System.Windows.Forms
參考。 只要將它新增至Visual Studio 2022專案並重建即可。+ <Reference Include="System.Windows.Forms" />
升級
Microsoft.VisualStudio.SDK
和Microsoft.VSSDK.BuildTools
封裝 Visual Studio 2022 版本的參考。注意
這些是本指南建立時可用的最新版本。 建議您取得可用的最新版本。
-<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" />
編輯您的
source.extension.vsixmanifest
檔案以反映以 Visual Studio 2022 為目標。設定標記
<InstallationTarget>
以反映 Visual Studio 2022,並指出 amd64 承載:<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)"> <ProductArchitecture>amd64</ProductArchitecture> </InstallationTarget>
修改必要條件,只包含 Visual Studio 2022 和更新版本:
- <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" />
我們完成了!
建置現在會產生Visual Studio 2019和Visual Studio 2022 VSIX。
其他範例
- ProPower Tools
- PeekF1
- 允許透過所選取類別/物件的說明資訊來查看網頁瀏覽器。
- FixMixedTabs
- 掃描您的檔,並以空格取代索引標籤,反之亦然
- PeekF1
下一步
閱讀此 開始到完成指南來準備更新延伸模組。