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

    // ... 
} 
相關問題