VSX 获取在 Excel 中使用添加时打开的当前项目

VSX getting current project thats opened when using addin Exec

我目前正在了解如何为 Visual Studio 2012 制作插件。我目前在工具栏上有一个按钮,点击它会打开一个 winform。

一旦我开始调试加载项,它就会打开另一个 VS2012 实例,然后我会打开一个我正在处理的随机项目。

一旦我打开那个随机项目,然后单击加载项按钮,它就会毫无问题地弹出 winform。但是,我在尝试弄清楚如何获取我正在处理的当前项目名称、路径等以便让加载项为随机打开的项目执行操作时遇到问题。

我必须在加载项按钮上打开弹出窗口的代码单击:

Public Sub Exec(ByVal cmdName As String, ByVal executeOption As vsCommandExecOption, ByRef varIn As Object, ByRef varOut As Object, ByRef handled As Boolean) Implements IDTCommandTarget.Exec
    handled = False

    If (executeOption = vsCommandExecOption.vsCommandExecOptionDoDefault) Then
        If cmdName = addInInstance.ProgID & "." & MY_COMMAND_NAME Then
            Dim theForm As mainForm = New mainForm(addInInstance)

            handled = True
            theForm.ShowDialog()
        End If
    End If
End Sub

其中定义并设置了_applicationObject

Public Sub OnConnection(ByVal application As Object, ByVal connectMode As Extensibility.ext_ConnectMode, ByVal addInInst As Object, ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnConnection
    Try
        applicationObject = CType(application, EnvDTE.DTE)
        addInInstance = CType(addInInst, EnvDTE.AddIn)
    .....
End Sub

Winform 代码如下所示:

Public Sub New(ByVal _applicationObject As EnvDTE.AddIn)
    InitializeComponent()
    Dim solutionDir As String = System.IO.Path.GetDirectoryName(_applicationObject.Name)
End Sub

我认为 VS 加载项有可能知道 IDE 当前打开的项目并收集有关它的信息?当前 winform 代码显示 "" for siolutionDir 但 _applicationObject.Name 的值为 SourceCC - 未提供名称。 这就是我的加载项的名称 SourceCC.

任何帮助都会很棒,因为这是我的第一个 VS 插件!

OnConnection 方法中,您获得具有 Solution [=22] 的 applicationObject =] 类型 EnvDTE.Solution。您可以使用 applicationObject.Solution 访问当前打开的解决方案。