再現する手順:
- Visual Studio 2017 を開きます。[ファイル..新規..プロジェクト..] を選択します。
- [新しいプロジェクト] ダイアログから、[拡張性.. VSIX プロジェクト..] を選択します。
- ソリューション エクスプローラーから新しいプロジェクトを選択します。右クリックして追加.. 新しいアイテム.. 拡張性.. カスタム コマンド..
- これで、標準テンプレートから作成された完全なカスタム コマンドが完成しました。デバッガーで実行します。Visual Studio の実験的なインスタンスを取得します。メニューから、[ツール] を選択します... コマンド 1 を呼び出します... カスタム コマンドが機能します。
- [OK] をクリックして、Visual Studio の実験用インスタンスを終了します。
- 次に、元のソリューションに戻り、[ツール].. NuGet パッケージ マネージャー.. [ソリューションの NuGet パッケージの管理] をクリックします。
- [更新] タブに、テンプレートに含まれる標準パッケージに対する多くの更新があることがわかります。それらをすべて選択して更新します。すべてのパッケージが更新されるまで繰り返します。プロセス中に VS を再起動する必要がある場合があります。
VSIX パッケージを再度ビルドします。このステートメントに関する警告を抑制する必要がある場合があります。
public static async Task InitializeAsync(AsyncPackage package) { // Verify the current thread is the UI thread - the call to AddCommand in Command1's constructor requires // the UI thread. #pragma warning disable VSTHRD109 // Switch instead of assert in async methods ThreadHelper.ThrowIfNotOnUIThread(); #pragma warning restore VSTHRD109 // Switch instead of assert in async methods OleMenuCommandService commandService = await package.GetServiceAsync((typeof(IMenuCommandService))) as OleMenuCommandService; Instance = new Command1(package, commandService); }
VSIX パッケージを再度デバッグします。
- ツールを選択... コマンド 1 を起動...
- エラーが表示されます:「Command1Package」パッケージが正しく読み込まれませんでした。
指示に従って %AppData% ディレクトリに移動し、アクティビティ ログを読むと、Microsoft.VisualStudio.Threading 15.8.0.0 アセンブリを読み込めないことがわかります。
ファイルまたはアセンブリ 'Microsoft.VisualStudio.Threading, Version=15.8.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。System.IO.FileNotFoundException: ファイルまたはアセンブリ 'Microsoft.VisualStudio.Threading, Version=15.8.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' またはその依存関係の 1 つを読み込めませんでした。