共用方式為


ImageOptimizer - 逐步更新 Visual Studio 擴充功能

本指南會顯示新增 Visual Studio 2022 支援所需的所有步驟,同時使用影像優化器擴充功能作為案例研究來維護 Visual Studio 2019 支援。
這是一份完整的指南,其中包含每個步驟的 git 認可連結,但您可以在這裡看到完成的 PR: https://github.com/madskristensen/ImageOptimizer/pull/46

本指南結尾也有 其他範例

步驟 1 - 將項目現代化

請參閱 將項目現代化。

git commit e052465

首先,我們會在專案的 [屬性] 頁面底下,將 VSIX 和單元測試項目顛簸至 .NET 4.7.2:

Framework version bump

映射優化器參考了一些舊的自定義 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 專案之間共用的延伸模組原始程式碼。

  1. 將新的共享專案新增至您的方案

    git commit abf249d

    Add shared project

  2. 將共用項目的參考新增至 VSIX 專案。

    git commit e8e941e

    Add shared project reference

  3. 將原始碼檔案 (cs、xaml、resx) 移至新的共享專案 ,但下列專案除外

    • source.extension.vsixmanifest
    • 延伸模組元資料檔案(圖示、授權、版本資訊等)
    • VSCT 檔案
    • 連結的檔案
    • 需要包含在 VSIX 中的外部工具或連結庫

    git commit f31f051

    Move files to shared project

  4. 現在,將所有元數據、VSCT 檔案、鏈接的檔案和外部工具/連結庫移至共用位置,並將其新增回 VSIX 專案做為連結專案。 請勿 移除 source.extension.vsixmanifest

    git commit 73ba920 - 移動檔案

    git commit d5e36b2 - 新增外部工具/連結庫

    1. 針對此項目,我們需要將延伸模組圖示、VSCT 檔案和外部工具移至新的資料夾 ImageOptimizer\Resources。 將它們複製到共享資料夾,並從 VSIX 專案中移除它們。
    2. 將它們新增回為連結的專案,如果專案已經連結的專案可以維持不變(例如授權)。
    3. 藉由選取每個連結檔案並檢查屬性工具窗口,驗證 [建置動作] 和其他屬性在新增的鏈接檔案中正確設定。 針對我們的項目,我們必須設定下列專案:
      • 將 [建置動作] 設定 icon.png 為 , Content 並將 [包含在 VSIX] 中標示為 true

      • 將 [建置動作] 設定為 ,VSCTComplile並將 VSIX 中的 [包含] 設定ImageOptimizer.vsctfalse

      • 將 下 Resources\Tools 檔案的所有建置動作設定為 , Content 並將 VSIX 中標示為 [包含] true

        Add linked files to VSIX project

      • 此外,這是的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,並視需要設定建置動作。

  5. 建置您的項目來驗證您的變更,並修正任何錯誤/問題。 如需常見問題,請參閱常見問題一節。

步驟 3 - 新增 Visual Studio 2022 VSIX 專案

請參閱 新增Visual Studio 2022目標

  1. 將新的 VSIX 專案新增至您的方案。

  2. 拿掉新專案中的任何其他原始程式碼,但除外 source.extension.vsixmanifest.

    Create a new VSIX project

  3. 新增共用項目的參考。

    git commit dd49cb2

    Add reference to shared project

  4. 從 Visual Studio 2019 VSIX 專案新增連結的檔案,並驗證其「建置動作」和「包含在 VSIX」屬性相符。 source.extension.vsixmanifest此外,我們會在稍後修改檔案以支援Visual Studio 2022。

    git commit 98c43ee

    Add Linked files to VSIX project

  5. 嘗試建置會顯示遺漏的 System.Windows.Forms參考。 只要將它新增至Visual Studio 2022專案並重建即可。

    git commit de71ccd

    + <Reference Include="System.Windows.Forms" />
    
  6. 升級 Microsoft.VisualStudio.SDKMicrosoft.VSSDK.BuildTools 封裝 Visual Studio 2022 版本的參考。

    git commit d581fc3

    注意

    這些是本指南建立時可用的最新版本。 建議您取得可用的最新版本。

    -<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" />
    
  7. 編輯您的 source.extension.vsixmanifest 檔案以反映以 Visual Studio 2022 為目標。

    git commit 9d393c7

    1. 設定標記 <InstallationTarget> 以反映 Visual Studio 2022,並指出 amd64 承載:

      <InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[17.0,18.0)">
          <ProductArchitecture>amd64</ProductArchitecture>
      </InstallationTarget>
      
    2. 修改必要條件,只包含 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
      • 掃描您的檔,並以空格取代索引標籤,反之亦然

下一步

閱讀此 開始到完成指南來準備更新延伸模組。