6

デバッグ用のプログラムを起動する前に毎回バッチスクリプトを実行します。デバッグする前にバッチスクリプトを実行する

ビルドイベントでは、ビルド前イベント、ビルド後イベントを使用してそのような機能が実現されます。

実際のデバッグでは、デバッグ前のイベント、デバッグ後のイベントは見つかりませんでした。

このシナリオを実現するにはどうすればよいですか?

私はVS2008、.netフレームワーク3.5、C#アプリケーションを使用しています。

私は、外部バッチファイルを起動するアプリケーション内に余分なコード行を作成するという考えに反対しています。

答えて

9

私はあなたが追加コードを避けたいと思っていますが、Main関数ではDebugger.IsAttached()あなたのために仕事を始めることができます。例えば

if (Debugger.IsAttached) 
{ 
    System.Diagnostics.Process.Start(@"C:\myBatchFile.bat"); 
} 
0
if $(ConfigurationName) == Debug mkdir c:\mydir 

あなたがチェックアウトする必要があります...だからHow to run Visual Studio post-build events for debug build only

+1

実は私はデバッグする前に、ないポストビルドイベントの後に解雇されたものが必要。デバッグモードでツールを起動するたびにスクリプトを実行する必要があります。ソースコードに変更はありません(したがって、ビルドは行わず、ツールの起動のみ)。 – Tilak

-2

、あなたがビルド前イベントを経由して実行したいの.batファイルがありますか? ビルド前のイベントコマンドでバッチファイルへのフルパスを指定してください。

cmd /c C:\Path\to\foo.bat 

または

cmd C:\windows\system32\cmd.exe /c C:\Path\to\foo.bat 
+0

あなたはおそらく完全に疑問を誤解しているでしょう。すべてのデバッグが始まる前に、 "Pre/Post-build"イベントは実行されません。たとえば、前回のビルド後にコードを変更していない場合、ビルドはデバッグされる前に起動されません。 –

3

あなたはVSマクロを使用することができます。

は、私は同じ問題を持っていたし、これは私がこれまでマクロ here

唯一の問題にイベントハンドラを追加する方法についてはかなり良い説明があり

Dim MustUpdateDB As Boolean 

    Private Sub DebuggerEvents_OnEnterRunMode(ByVal Reason As EnvDTE.dbgEventReason) Handles DebuggerEvents.OnEnterRunMode 
     If (MustUpdateDB) Then 
      MsgBox("Start debug operation", MsgBoxStyle.OkOnly, "TITLE") 
      REM DO WHATEVER COMMAND HERE 
      REM System.Diagnostics.Process.Start("C:\listfiles.bat") 
      MustUpdateDB = False 
     End If 


    End Sub 

    Private Sub BuildEvents_OnBuildDone(ByVal Scope As EnvDTE.vsBuildScope, ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone 
     MsgBox("Build Done", MsgBoxStyle.OkOnly, "Title") 
     MustUpdateDB = True 
    End Sub 

に付属して最高です私は今のところ、現在デバッグされているアプリケーションのアクティブディレクトリを取得する方法を見つけることです

関連する問題