kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

デバッガではプロセス名が変わるよという話

注)hoge.exeをVisual Studioのデバッガで実行したときの話。

  Process ps = Process.GetcurrentProcess();
  ProcessModuleCollection mods = ps.Modules;
  foreach(ProcessModule mod in mods) {
    if(String.Compare(mod.ModuleName, "hoge.exe", true) {
       Console.WriteLine("found");
       break;
    }
  }

これは普通に実行すると"found"が表示されますが、デバッガでは表示されません。規定ではホストプロセス(hoge.vhost.exe)経由で動くため、ModuleNameがhoge.vhost.exeになってしまうから。AppDomain.CurrentDomain.FriendlyNameやAssembly.GetCallingAssembly().FullNameも現象は同じ。プロジェクトのプロパティの「デバッグ」で「Visual Studio ホスティング プロセスを有効にする」をはずしましょう。もちろん副作用もあります。

  • 遅くなる
  • 部分信頼アプリのデバッグができなくなる
  • デザイン時の式評価ができなくなる