19

Burn for MSIs パッケージを使用しています。WiXBA の代わりに、Votive (Visual Studio) と独自のカスタム BA を使用しています。を使用してカスタム BA をデバッグしようとしましDebugger.Launch()た。しかし、デバッグを開始すると、エラー メッセージが表示されます。

コール スタック フレームのシンボルは読み込まれません。ソースコードを表示できません

package.exe が にある CustomBA dll をリンクしていることに気付きましたC:\Documents and Settings\user\Local Settings\Temp\{GUID}\{GUID}常に変更されます。そのため、package.exe を実行するたびに、常にディレクトリが変更されます。

それがエラーの原因だと思います。

Visual Studio で、絶対パス ( ) にある CustomBA dll で package.exe を起動したとき.../Debug/bin/CustomBA.dll。しかし、package.exe を実行すると、Local Settings\Temp\{GUID}ディレクトリにリンクされます。そのため、デバッグを開始して CustomBA dll にアタッチすると、CustomBA dll のディレクトリが動的に変更され、No symbols are loadedエラーが発生します。

  • package.exe が にある dll をリンクするのはなぜC:\Documents and Settings\user\Local Settings\Temp\{GUID}\ですか? dll のパスを静的に選択できますか?
  • dll パスを静的に選択できない場合、CustomBA のデバッグ機能を使用するにはどうすればよいですか?
4

7 に答える 7

5

Visual Studio からカスタム BA をデバッグ モードで実行することはできません。

できることは、生成されたexeファイルを実行し、Visual Studioをプロセスに接続してデバッグできるようにすることです。(メニュー: Tools > Attach to Process > Find your exe in the list)

于 2012-06-21T10:10:58.917 に答える
0

ロブのソリューションは機能しません。AhmedBM のアプローチは機能しますが、VS が WiX ブートストラップ プロセスを実行し、すぐに子プロセスにアタッチするように、さらに合理化することができます。

public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package)
{
    //kill old ones if any
    System.Diagnostics.Process.Start(@"c:\Windows\System32\taskkill.exe", "/F /IM Bootstrapper.exe /T");
    System.Threading.Thread.Sleep(1000);
    //start new one
    System.Diagnostics.Process.Start(@"<solution path>\src\Bootstrapper\bin\Debug\Bootstrapper.exe");
    System.Threading.Thread.Sleep(1000);

    foreach (Process proc in DTE.Debugger.LocalProcesses)
    {
        if (proc.Name.ToString().Contains(@".cr\Bootstrapper.exe"))
        {           
                proc.Attach();
                return;  
        }
    }
    System.Windows.MessageBox.Show("Bootstrapper Process was not found.");
}

唯一の問題は、DTE オブジェクトが必要なことです。VS の以前のバージョンでは、アクセス可能な場所にマクロがありました。しかし、VS 2017 にはそれらがありません。したがって、簡単な VS 拡張をすばやく作成し、そこにコードを実行するコマンドを追加できます。または、既存の拡張機能を使用して、カスタム コマンドを作成できるものもあります。

于 2020-02-04T15:14:41.357 に答える