如何在启动Visual Studio时显示对话框。 - VS扩展

时间:2013-02-28 20:01:13

标签: c# visual-studio-2010 visual-studio-addins visual-studio-extensions

我正在构建一个Visual Studio扩展,我对如何在Visual Studio启动时显示对话框感到难过。

它的主要用途是当Visual Studio启动时,如果发现更新会出现对话框,我的扩展将检查更新。

有关扩展的信息非常稀缺,所以我不知道如何做到这一点。我正在使用C#。

编辑:我已经尝试将包含所有命令代码/回调的包文件中的代码添加到其初始化事件中,并且在Visual Studio看起来甚至已加载之前显示对话框,并且在我关闭之前不会继续加载它。我觉得我越来越近了。

他们是一个扩展启动命令,我可以在VSCT文件中创建,有点像菜单项吗?

3 个答案:

答案 0 :(得分:6)

我能够弄明白我的问题。由于缺乏信息,它经历了大量的试验和错误。我最初尝试过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();

    }

答案 1 :(得分: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();

    // ...
}

答案 2 :(得分:0)

我们正在使用OnAfterOpenProject。您可以检查更新并找到对话框。