2009-08-09 53 views
0

私のコードでは、特定のプロファイラに接続するプロセスを設定する必要があります。私は、これは私がしなければならないだろうかであることを理解:今COR_PROFILER環境変数を設定して正しいプロファイラにリンクする方法

ProcessStartInfo processStartInfo = new ProcessStartInfo(exePath); 
processStartInfo.EnvironmentVariables["Cor_Enable_Profiling"] = "0x1"; 
processStartInfo.EnvironmentVariables["COR_PROFILER"] = "{B146457E-9AED-4624-B1E5-968D274416EC}"; 
processStartInfo.UseShellExecute = false; 

問題は、私はprocessStartInfo.EnvironmentVariables["COR_PROFILER"]を設定する方法を、私の選択のプロファイラのために、知っていないということです、私は見つけることができる任意の場所がありますプロファイラアプリケーション名とプロファイラGUIDの間のマッピングを外しますか?

答えて

0

私はそれを把握しました。ここで

は、あなたがそれを行うことができます方法は次のとおりです。

public class RunProfiler 
    { 
    public void RunProfiler() 
    { 
     ProcessStartInfo processStartInfo = new ProcessStartInfo(exePath); 
     processStartInfo.EnvironmentVariables["Cor_Enable_Profiling"] = "0x1"; 
     processStartInfo.EnvironmentVariables["COR_PROFILER"] = RegistryCode. GetRegistry(); 
     processStartInfo.UseShellExecute = false; 
     } 
    } 
    public static class RegistryCode 
    { 

     public static string GetRegistry() 
     { 
      RegistryKey objectMe = Registry.ClassesRoot.OpenSubKey("CLSID", false); 
      string[] valueName = objectMe.GetSubKeyNames(); 
      for (int i = 0; i < valueName.Length; i++) 
      { 
       var registryValue= objectMe.OpenSubKey(valueName[i], false).OpenSubKey("InprocServer32", false); 
       if(registryValue!=null) 
       { 
        var valueName1 = (string)registryValue.GetValue(""); 
        if (valueName1!=null&&valueName1.Contains(@"C:\Program Files\Typemock\Isolator\")) // or any other path that your profiler dll is located on 
         return valueName[i]; 

       } 
      } 
      return null; 
     } 


    } 
0

COR_PROFILER環境変数は、ICorProfilerCallback2インターフェイスを実装するコクラスのGUIDに設定する必要があります。

カスタムプロファイラを実装した場合、これはIDLで設定されます。

これはプロファイラを参照する方法であり、実際のパスを知る必要はありませんが、この動作を可能にするには、プロファイラを使用するCOM dllを登録する必要があります。

0

あなたが代わりにCOR_PROFILERのCOR_PROFILER_PATHを使用することができます。それはプロファイリングエージェントDLLを直接指しています。

集合COR_PROFILER_PATH = C:たとえば\プログラムファイル\ MyProfiler \ MyAgent.dll

はCLR4にし、後に動作しますCOR_PROFILER_PATHに注意してください。 別のオプションは、GUIDのPROGID instedを使用しています。例えば:

セットCOR_PROFILER = MyProfiler.MyAgent

のPROGIDは、HKEY_CLASSES_ROOTの下で登録されている

関連する問題