(学)关于开发插件过程中的几点事项

纯属个人工作记录。

1、插件OnConnection事件执行两次,结果导致其中的部份关联事件的方法执行了多次,学习http://sifang2004.cnblogs.com/archive/2006/06/26/436178.html,加上了 if (xxxxxxxxxxxx)这样一行代码问题解决。   

(学)关于开发插件过程中的几点事项 代码
1  public   void  OnConnection( object  application, ext_ConnectMode connectMode,  object  addInInst,  ref  Array custom)
2  {
3      _applicationObject  =  (DTE2)application;
4      _addInInstance  =  (AddIn)addInInst;
5       if  (connectMode  ==  ext_ConnectMode.ext_cm_AfterStartup  ||  connectMode  ==  ext_ConnectMode.ext_cm_Startup)
6      {
7          // 事件关联代码
8      }
9  }

2、插件需要以管理员的身份执行,但通过插件判断提示VS需要以管理身份运行后原来所打开的VS未能关闭。

     由原来的

     VistaSecurity.RestartElevated();
     Environment.Exit(0);

     改成异步后问题解决。

     AsyncEventHandler asy = new AsyncEventHandler(VistaSecurity.RestartElevated);
     asy.Invoke();
     Environment.Exit(
0);

(学)关于开发插件过程中的几点事项 代码
if  (VistaSecurity.IsAdmin())
{
   RegistryKey key 
=  Registry.ClassesRoot.OpenSubKey( @" RegistKey\ "   +  ProductName,  true );
   
try
   {
       key 
=  Registry.ClassesRoot.CreateSubKey( @" RegistKey\ "   +  ProductName);
       key.SetValue(ActiveCode, strKey);
   }
   
finally
   {
       key.Close();
   }
}
else
{
   AsyncEventHandler asy 
=   new  AsyncEventHandler(VistaSecurity.RestartElevated);
   asy.Invoke();
   Environment.Exit(
0 );
}


 
public   delegate   void  AsyncEventHandler();

 

 

3、.net平台生来就注定程序员写出来的代码没有任何安全可言,太可怕了。

 

4、补充:为什么开发的插件中某些事件未能执行?

    参见 http://social.msdn.microsoft.com/Forums/en-IE/vsx/thread/38381610-398a-42dd-8611-f6d9a596d1fa

你可能感兴趣的:(插件)