Visual studio 如何从EnvDTE命令中获取输出值(customOut)。Raise方法?

Visual studio 如何从EnvDTE命令中获取输出值(customOut)。Raise方法?,visual-studio,visual-studio-2012,visual-studio-extensions,Visual Studio,Visual Studio 2012,Visual Studio Extensions,我正在编写一个Visual Studio 2012加载项,它需要向内置的T-SQL编辑器发送命令。有问题的命令sqlEditorSqlDatabaseCommand可用于在编辑器中设置或获取当前数据库的名称。下面是一些设置数据库名称的(工作)代码: const string guidSqlEditorCommandSet = "b371c497-6d81-4b13-9db8-8e3e6abad0c3"; const int sqlEditorSqlDatabaseCommand = 0x312;

我正在编写一个Visual Studio 2012加载项,它需要向内置的T-SQL编辑器发送命令。有问题的命令sqlEditorSqlDatabaseCommand可用于在编辑器中设置或获取当前数据库的名称。下面是一些设置数据库名称的(工作)代码:

const string guidSqlEditorCommandSet = "b371c497-6d81-4b13-9db8-8e3e6abad0c3";
const int sqlEditorSqlDatabaseCommand = 0x312;

object customIn = "myDatabaseName";
object customOut = null;
m_applicationObject.Commands.Raise(guidSqlEditorCommandSet, sqlEditorSqlDatabaseCommand, ref customIn, ref customOut);
问题是,我需要获取当前数据库名称,这需要使用customOut参数,而我不知道如何使customOut工作

sqlEditorSqlDatabaseCommand的实现如下(通过Reflector):

根据我看到的每个封送处理示例,我应该能够为customIn和customOut传递null,并且数据库名称应该放在customOut中。当我这样做时,我从命令中得到一个E_INVALIDARG异常。Raise:

System.ArgumentException: The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))
    at EnvDTE.Commands.Raise(String Guid, Int32 ID, Object& CustomIn, Object& CustomOut)
    at RDSVisualStudioAddIn.Exec(String commandName, vsCommandExecOption executeOption, Object& varIn, Object& varOut, Boolean& handled) in c:\RDS\RDSVisualStudioAddIn\Connect.cs:line 193
是否有人使用过命令。使用customOut参数提升

System.ArgumentException: The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))
    at EnvDTE.Commands.Raise(String Guid, Int32 ID, Object& CustomIn, Object& CustomOut)
    at RDSVisualStudioAddIn.Exec(String commandName, vsCommandExecOption executeOption, Object& varIn, Object& varOut, Boolean& handled) in c:\RDS\RDSVisualStudioAddIn\Connect.cs:line 193