質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

解決済

1回答

2021閲覧

Visual Studioエディターを、Windowsコマンドプロンプトから行指定で開きたい

yale

総合スコア11

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

1クリップ

投稿2018/03/02 08:00

背景:
開発において、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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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)

投稿2018/03/02 10:27

HARQ

総合スコア181

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yale

2018/03/03 13:37 編集

ありがとうございます!こちらの方法で実現できました。 実際に試して動いたコードを展開しておきます。以下変更点です。 ・エラー「Sub プロシージャを呼び出すときに、かっこを使うことはできません」を解消  ⇒MoveToLineAndOffsetの戻り値を入れないとエラーになるようなので修正しました。 ・ファイル名、行数をコマンドライン引数から渡すように変更  ⇒汎用性をあげるために追加しました。 コマンドラインから以下で動くようになってます。 >jumpToVS.vbs A.cs 200 以下が修正コードです。 ------ On Error Resume Next Dim file, line Dim result if WScript.Arguments.Count <> 2 then WScript.echo("usage: jumpToVS.vbs arg1 arg2") WScript.Quit(-1) end if file = WScript.Arguments(0) line = WScript.Arguments(1) 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(file) result = objDTE.ActiveDocument.Selection.MoveToLineAndOffset(line, 1)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問