次の方法で共有


ImageOptimizer - Visual Studio 拡張機能を段階的に更新する

このガイドでは、Image Optimizer 拡張機能をケース スタディとして使用して Visual Studio 2019 のサポートを維持しながら、Visual Studio 2022 のサポートを追加するために必要なすべての手順について説明します。
これは、各ステップへの git コミット リンクを含む完全なガイドを意味しますが、ここで最終版の PR を自由に確認できます:https://github.com/madskristensen/ImageOptimizer/pull/46.

このガイドの最後には、追加のサンプル もあります。

手順 1 - プロジェクトを最新化する

プロジェクト の最新化参照してください。

Git コミット e052465

まず、プロジェクトのプロパティ ページの下にある .NET 4.7.2 に VSIX プロジェクトと単体テスト プロジェクトをバンプします。

フレームワークバージョンの更新

イメージ オプティマイザーは、いくつかの古いカスタム 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 コミット abf249d

    共有プロジェクト を追加する

  2. 共有プロジェクトへの参照を VSIX プロジェクトに追加します。

    Git コミット e8e941e

    共有プロジェクト参照 を追加する

  3. 次の を除き、ソース コード ファイル (cs、xaml、resx) を新しい共有プロジェクト に移動します。

    • source.extension.vsixmanifest
    • 拡張メタデータ ファイル (アイコン、ライセンス、リリース ノートなど)
    • VSCT ファイル
    • リンクされたファイル
    • VSIX に含める必要がある外部ツールまたはライブラリ

    Git コミット f31f051

    ファイルを共有プロジェクト に移動する

  4. 次に、すべてのメタデータ、VSCT ファイル、リンクされたファイル、外部ツール/ライブラリを共有の場所に移動し、それらをリンクされた項目として VSIX プロジェクトに追加し直します。 source.extension.vsixmanifestを削除 しないでください。

    git commit 73ba920 - ファイルの移動

    git commit d5e36b2 - 外部ツール/ライブラリ の追加

    1. このプロジェクトでは、拡張機能アイコン、VSCT ファイル、および外部ツールを新しいフォルダー ImageOptimizer\Resourcesに移動する必要があります。 共有フォルダーにコピーし、VSIX プロジェクトから削除します。
    2. それらをリンクされたアイテムとして追加し、既にリンクされたアイテムである場合は、そのまま維持できます (ライセンスなど)。
    3. 追加されたリンク ファイルでビルド アクションとその他のプロパティが正しく設定されていることを確認します。各ファイルを選択し、プロパティ ツール ウィンドウを確認します。 プロジェクトでは、次の設定を行う必要がありました。
      • icon.png のビルド アクションを Content に設定し、VSIX に含めるとして true をマークしました。

      • ビルド アクションを ImageOptimizer.vsct から VSCTComplile に設定し、VSIX に含めるを false に設定する

      • [Resources\Tools] の下にあるファイルのすべてのビルド アクションを Content に設定し、[VSIX に含める] を [true に設定します。

        リンクされたファイルを VSIX プロジェクト に追加する

      • さらに、ImageOptimizer.csImageOptimizer.vsctの依存関係です。このため、この依存関係を 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. を除き、新しいプロジェクト内の追加のソース コードを削除する

    新しい VSIX プロジェクト を作成する

  3. 共有プロジェクトへの参照を追加します。

    Git コミット dd49cb2

    共有プロジェクトへの参照の追加

  4. Visual Studio 2019 VSIX プロジェクトからリンクされたファイルを追加し、その "ビルド アクション" プロパティと "VSIX に含める" プロパティが一致することを検証します。 また、source.extension.vsixmanifest ファイルをコピーして、Visual Studio 2022 をサポートするように後で変更します。

    Git コミット 98c43ee

    リンクされたファイルを VSIX プロジェクト に追加する

  5. 試行されたビルドは、System.Windows.Formsへの参照が見つからないことを示しています。 Visual Studio 2022 プロジェクトに追加してリビルドするだけです。

    Git コミット de71ccd

    + <Reference Include="System.Windows.Forms" />
    
  6. Microsoft.VisualStudio.SDK および Microsoft.VSSDK.BuildTools パッケージ参照を Visual Studio 2022 バージョンにアップグレードします。

    Git コミット 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. Visual Studio 2022 をターゲットにするように、source.extension.vsixmanifest ファイルを編集してください。

    Git コミット 9d393c7

    1. visual Studio 2022 を反映するように <InstallationTarget> タグを設定し、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 VSIXes の両方が生成されるようになりました。

その他のサンプル

  • ProPower ツール
    • PeekF1
      • 選択したクラスやオブジェクトに関するヘルプ情報を表示するウェブブラウザを使って内容を確認できます。
    • フィックスミックスドタブス
      • ドキュメントをスキャンし、タブをスペース (またはその逆) に置き換えます

次の手順

この の最初から最後までのガイドを読んで、拡張機能を更新する準備をします。