1

MSVS 2012 用のアドインを開発しています。現在開いている tsql タブの接続文字列を取得する必要があります。

MSVS 2010 で IScriptFactory インターフェイス メンバーを使用して接続文字列を取得しました (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);
    }
}

nullServiceCache.VSMonitorSelectionの問題だと思います。

于 2012-09-26T09:43:47.677 に答える