DTE.Addins.Update是什么用的?解决方法
DTE.Addins.Update是什么用的?
我使用VS2008,下面代码Shell前和Shell后插件的个数没变。
------解决方案--------------------
DTE.Addins.Update的作用:更新 AddIns 集合,就像打开“外接程序管理器”对话框查找新注册的外接程序一样。
以下是官方代码,肯定是正确的,和你的类似。
另外官方文档解释:
如果外接程序是 DTE.AddIns,则该集合包含列在“外接程序管理器”对话框中的所有这些外接程序;或者,如果外接程序是 Solution.AddIns,则该集合包含由特定解决方案加载的所有这些外接程序。
通过以上,我怀疑你的1.dll是不包含在DTE.Addins而是在Solution.Addins中,你可以查询Solution.Addins.
------解决方案--------------------
将addincoll = DTE.AddIns改为addincoll=Solution.Addins试一试!
------解决方案--------------------
参考下面的代码:
我使用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)