我正在构建一个Visual Studio扩展,我对如何在Visual Studio启动时显示对话框感到难过。
它的主要用途是当Visual Studio启动时,如果发现更新会出现对话框,我的扩展将检查更新。
有关扩展的信息非常稀缺,所以我不知道如何做到这一点。我正在使用C#。
编辑:我已经尝试将包含所有命令代码/回调的包文件中的代码添加到其初始化事件中,并且在Visual Studio看起来甚至已加载之前显示对话框,并且在我关闭之前不会继续加载它。我觉得我越来越近了。
他们是一个扩展启动命令,我可以在VSCT文件中创建,有点像菜单项吗?
答案 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.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();
// ...
}
答案 2 :(得分:0)
我们正在使用OnAfterOpenProject。您可以检查更新并找到对话框。