1

我为 MSVS 2012 开发了一个插件。我需要获取当前打开的 tsql 选项卡的连接字符串。

我使用 IScriptFactory 接口成员在 MSVS 2010 中获取连接字符串(我使用 ServiceCache.ScriptFactory.CurrentlyActiveWndConnectionInfo.UIConnectionInfo 属性)。IScriptFactory 接口在 Microsoft.SqlServer.SqlTools.VSIntegration.VS.dll 程序集中定义。

对于 SSMS 2012,我使用相同的接口,但在 SqlPackageBase.dll 程序集中定义。

我在 MSVS 2012 (Ultimate RTM) 安装文件夹中既找不到 Microsoft.SqlServer.SqlTools.VSIntegration.VS.dll 也找不到 SqlPackageBase.dll 程序集。

我还尝试在所有安装的 MSVS 2012 程序集中找到 CurrentActiveWndConnectionInfo 类和 IScriptFactory 接口,但什么也没找到。

如何在 MSVS 2012 中获取当前 tsql 选项卡的连接字符串?

4

1 回答 1

1

SQLEditors.dll ("...\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Extensions\Application\SQLEditors.dll ") 程序集包含所需的信息。我尝试使用 ScriptFactory.Instance.CurrentlyActiveWndConnectionInfo 属性,但它会生成 InvalidOperationException。这是 CurrentActiveWndConnectionInfo 属性反汇编的结果:

public CurrentlyActiveWndConnectionInfo CurrentlyActiveWndConnectionInfo
{
    get
    {
        STrace.Params("ScriptFactory", "ScriptFactory.CurrentlyActiveWndConnectionInfo", string.Empty, null);
        if (ServiceCache.VSMonitorSelection == null)
        {
            STrace.LogExThrow();
            throw new InvalidOperationException();
        }
        return this.GetCurrentlyActiveWndConnectionInfo(ServiceCache.VSMonitorSelection);
    }
}

我认为 null ServiceCache.VSMonitorSelection 中的问题。

于 2012-09-26T09:43:47.677 回答