このガイドでは、Image Optimizer 拡張機能をケース スタディとして使用して Visual Studio 2019 のサポートを維持しながら、Visual Studio 2022 のサポートを追加するために必要なすべての手順について説明します。
これは、各ステップへの git コミット リンクを含む完全なガイドを意味しますが、ここで最終版の PR を自由に確認できます:https://github.com/madskristensen/ImageOptimizer/pull/46
.
手順 1 - プロジェクトを最新化する
プロジェクト の最新化参照してください。
まず、プロジェクトのプロパティ ページの下にある .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 プロジェクト間で共有される拡張機能のソース コードを含む新しい共有プロジェクトを追加する必要があります。
ソリューションに新しい共有プロジェクトを追加する
を追加する
共有プロジェクトへの参照を 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
をマークしました。ビルド アクションを
ImageOptimizer.vsct
からVSCTComplile
に設定し、VSIX に含めるをfalse
に設定する[
Resources\Tools
] の下にあるファイルのすべてのビルド アクションをContent
に設定し、[VSIX に含める] を [true
に設定します。に追加する
さらに、
ImageOptimizer.cs
はImageOptimizer.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 を手動で変更し、必要に応じてビルド アクションを設定できます。
- このプロジェクトでは、拡張機能アイコン、VSCT ファイル、および外部ツールを新しいフォルダー
プロジェクトをビルドして変更を検証し、エラーや問題を修正します。 一般的な問題については、「よく寄せられる質問」セクションを参照してください。
手順 3 - Visual Studio 2022 VSIX プロジェクトを追加する
「Visual Studio 2022 ターゲットの追加」を参照してください。
ソリューションに新しい 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" />
Visual Studio 2022 をターゲットにするように、
source.extension.vsixmanifest
ファイルを編集してください。visual Studio 2022 を反映するように
<InstallationTarget>
タグを設定し、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 VSIXes の両方が生成されるようになりました。
その他のサンプル
- ProPower ツール
- PeekF1
- 選択したクラスやオブジェクトに関するヘルプ情報を表示するウェブブラウザを使って内容を確認できます。
- フィックスミックスドタブス
- ドキュメントをスキャンし、タブをスペース (またはその逆) に置き換えます
- PeekF1
次の手順
この の最初から最後までのガイドを読んで、拡張機能を更新する準備をします。