質問: 背景: 開発において、Visual Studio 2015(以下VS)でコード作成、ビルドをしているのですが、 その他にコードのビジュアル化ツールも併用しています。 ビジュアル化ツールから、VSのソースコードエディターの着目している行に直接飛べると便利と考え、 そのツールの外部コマンド実行機能(Windowsコマンドプロンプト実行と等価)で、VSへ飛ぼうとしています。 実現したいこと: Windowsコマンドプロンプトから、現在開いているVSインスタンス上で、VSエディターの指定行を開きたいです。 ・可能であれば、一行のコマンドで開きたい ・コマンドプロンプトからPerlなどスクリプトを実行する方法でも可 試したこと: 以下を参考にし、少し試しましたが、実現できていません。 Devenvコマンドラインスイッチ https://msdn.microsoft.com/ja-jp/library/xee0c8y7.aspx Visual Studioコマンド https://docs.microsoft.com/ja-jp/visualstudio/ide/reference/visual-studio-commands (1)devenv.exe /edit A.cs ・現在開いているVSインスタンス上で、VSエディターは開ける ・行指定はとりあえずしていない (2)devenv.exe A.cs /command "Edit.GoTo" 200 ・別のVSインスタンスが起動してしまう ・VSエディターの指定行(200行目)が開ける (3)devenv.exe /edit A.cs /command "Edit.GoTo" 200 ・現在開いているVSインスタンス上で、VSエディターは開ける ・しかし、その後に別のVSインスタンスが起動し、以下エラーが出る。 次のファイルがコマンドラインで指定されました: 200 ファイルが見つからないため読み込まれません。 ・別VSインスタンス上ではVSエディターは開かず、指定行への移動もしない。 環境: Windows 7 Microsoft Visual Studio Professional 2015 (Version 14.0.25431.01 Update 3) Microsoft .NET Framework Version 4.6.01055
回答: VBSを使用して、こんな感じで出来たと思います(出先なので動作未確認)。 ``` On Error Resume Next Set objDTE = GetObject(, "VisualStudio.DTE.14.0") If Err.Number<> 0 Then Set objDTE = CreateObject("VisualStudio.DTE.14.0") Err.Clear End If objDTE.MainWindow.Activate objDTE.MainWindow.Visible = True objDTE.UserControl = True objDTE.ItemOperations.OpenFile("A.CS") objDTE.ActiveDocument.Selection.MoveToLineAndOffset(200, 1) ```