3

我正在构建一个Visual Studio扩展,并且当我开始Visual Studio时,我很难展示一个对话框。如何在Visual Studio启动时显示对话框。 - VS扩展

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

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

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

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

+0

Visual Studio已经有一个检测更新扩展的机制。为什么它对你的需求没有用? – 2013-02-28 20:38:30

+2

因为只有当扩展名在MS图库中时才有效,并且有时候您不希望/需要在图库中添加扩展名(即某种形式的内部公司工具,它在您的生产环境之外没有用处),我不喜欢认为你可以通过.vmx文件安装的扩展更新VS。 – Psytronic 2013-02-28 20:45:38

+0

感谢Psytronic,你是对的。 – user1632018 2013-02-28 22:46:00

回答

5

我能找出我的问题。由于缺乏信息,它花了很多的尝试和错误。我最初尝试过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(); 

    } 
+0

你可以接受你自己的答案,所以在这种情况下适合做。 – 2013-03-02 04:25:27

+0

我打算这么做。我必须等24小时才能做到。谢谢。 – user1632018 2013-03-02 04:50:02

0

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

2

我假设您使用的是Visual Studio外接程序项目。如果你只想一个消息框,在Connect.cs文件,添加到System.Windows.Forms引用和using声明:

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(); 

    // ... 
} 
相关问题