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 回答