当前位置:编程学习 > C#/ASP.NET >>

DTE.Addins.Update是什么用的?

我使用VS2008,下面代码Shell前和Shell后插件的个数没变。


   Public Sub OnConnection(ByVal application As Object, ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)

        Me.AddInExample(_applicationObject)

   End Sub

   Sub AddInExample(ByVal DTE As DTE2)
        Dim addincoll As AddIns

        addincoll = DTE.AddIns

        MsgBox("Number of Add-ins: " & addincoll.Count)

        Shell("C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm e:\1\1.dll")
        addincoll.Update()

        MsgBox("Number of Add-ins: " & addincoll.Count)
    End Sub
--------------------编程问答-------------------- DTE.Addins.Update的作用:更新 AddIns 集合,就像打开“外接程序管理器”对话框查找新注册的外接程序一样。
以下是官方代码,肯定是正确的,和你的类似。
Sub AddInsExample()
   ' For this example to work correctly, there should be an add-in 
   ' available in the Visual Studio .NET environment.
   ' Set object references.
   Dim addincoll As AddIns
   Dim addinobj As AddIn
   
   ' Register an Add-in, check DTE Add-in count before and after the 
   ' Update.
   addincoll = DTE.AddIns
   MsgBox("AddIns collection parent name: " & addincoll.Parent.Name)
   MsgBox("Number of Add-ins: " & addincoll.Count)
   ' NOTE: Use regsvr32 for Visual C++ .NET, regasm for Visual Basic .NET 
   ' and Visual C# .NET. Also, the pathname used below is an example only.
   Shell("regasm F:\AddIns\RegExplore\Debug\regexplore.dll")
   addincoll.Update()
   MsgBox("Number of Add-ins: " & addincoll.Count)
   addinobj = addincoll.Item(1)
End Sub 

另外官方文档解释:
如果外接程序是 DTE.AddIns,则该集合包含列在“外接程序管理器”对话框中的所有这些外接程序;或者,如果外接程序是 Solution.AddIns,则该集合包含由特定解决方案加载的所有这些外接程序。

通过以上,我怀疑你的1.dll是不包含在DTE.Addins而是在Solution.Addins中,你可以查询Solution.Addins. --------------------编程问答-------------------- 将addincoll = DTE.AddIns改为addincoll=Solution.Addins试一试!
--------------------编程问答-------------------- 参考下面的代码:
 ' Open a solution before running this example.
   Dim soln As Solution

   ' Create a reference to the solution.
   soln = DTE.Solution

   ' List number of Add-ins.
   MsgBox(soln.AddIns.Count)
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,