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 访问当前打开的解决方案。
我目前正在了解如何为 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 访问当前打开的解决方案。