5

Visual Studio 拡張機能を構築していますが、Visual Studio の起動時にダイアログを表示する方法に困惑しています。

その主な用途は、Visual Studio が私の拡張機能を起動したときに、更新プログラムが見つかった場合に更新プログラムをチェックして、ダイアログが表示されるようにすることです。

拡張機能に関する情報は非常に少ないため、これを行う方法がわかりません。私はC#を使用しています。

編集:すべてのコマンドコード/コールバックを初期化イベントに含むコードをパッケージファイルに追加しようとしましたが、Visual Studio が読み込まれる前にダイアログが表示され、閉じるまで読み込まれません。でも近づいた気がする。

メニュー項目のようなもので、VSCT ファイルで作成できる拡張機能の起動コマンドですか?

4

3 に答える 3

7

私は自分の問題を理解することができました。情報不足でかなり試行錯誤しました。最初に OnStartupcomplete() イベントを試してみましたが、うまくいかなかったため、ここに来ました。機能しなかった理由は、その時点で DTE オブジェクトが初期化されていなかったためです。そのため、オブジェクトを作成してハンドラーを追加することができました。

[ProvideAutoLoad(Microsoft.VisualStudio.Shell.Interop.UIContextGuids.NoSolution)]
[ProvideAutoLoad(VSConstants.UICONTEXT.SolutionExists_string)]

 protected override void Initialize()
    {
       //DTE gets called
        var dte = (EnvDTE.DTE)GetService(typeof(EnvDTE.DTE));
        _EventsObj = dte.Events.DTEEvents;
        _EventsObj.OnStartupComplete += OnStartupComplete;

    }

        public void OnStartupComplete()
    {
        //This is the code to launch the dialog.


        EvaluationDialog EvalForm = new EvaluationDialog();
        EvalForm.ShowDialog();

    }
于 2013-03-01T17:35:43.980 に答える
2

Visual Studio アドイン プロジェクトを使用していると仮定しています。メッセージ ボックスだけが必要な場合は、Connect.csファイルに次System.Windows.Formsusingステートメントへの参照を追加します。

using System.Windows.Forms;

OnConnectionメソッドでは:

public void OnConnection(object application, 
    ext_ConnectMode connectMode, 
    object addInInst, ref Array custom)
{
    MessageBox.Show("message box");

    // or you could use your on dialog class
    var myDialog=new MyDialog();
    myDialog.Show();

    // ...
}
于 2013-03-01T15:33:42.300 に答える
0

OnAfterOpenProject を使用しています。更新を確認し、見つかった場合はダイアログを表示できます。

于 2013-03-01T14:59:56.000 に答える