我为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程序集中找到CurrentlyActiveWndConnectionInfo类和IScriptFactory接口,但一无所获。
如何在MSVS 2012中获取当前tsql选项卡的连接字符串?
答案 0 :(得分:1)
SQLEditors.dll(“... \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ Extensions \ Application \ SQLEditors.dll “)程序集包含所需信息。 我尝试使用ScriptFactory.Instance.CurrentlyActiveWndConnectionInfo属性,但它生成InvalidOperationException。 以下是CurrentlyActiveWndConnectionInfo属性反汇编的结果:
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中的问题。