VsDebugTargetInfo2.bstrEnv Alan

Tanım

Ortam ayarlarını içeren BSTR ( DLO_CreateProcess ).

public: System::String ^ bstrEnv;
public: Platform::String ^ bstrEnv;
std::wstring bstrEnv;
public string bstrEnv;
val mutable bstrEnv : string
Public bstrEnv As String 

Alan Değeri

String

Açıklamalar

Bu alan, özel ortam değişkenlerini ayarlamak için kullanılır. BstrEnv 'in null ile sonlandırılmış dizelerin null sonlandırılmış bir bloğu olması gerektiğini unutmayın. Ayrıca, varsayılan sistem ortamı değişkenlerinin belirtdikleriniz ile birleştirilmesini istediğinizi belirtmek için, LaunchFlags DBGLAUNCH_MergeEnv de geçirmeniz gerekir. Daha fazla bilgi için, lpEnvironment CreateProcesskonusundaki bölümüne bakın.

Aşağıda bu alanı doğru ayarlamaya yönelik bir örnek verilmiştir.

void LaunchMyProcessesUnderDebugger()  
{  
    processes = new Process[numberOfHostInstances];  
    VsDebugTargetInfo3[] debugTargetInfos = new VsDebugTargetInfo3[numberOfHostInstances];  
    string argumentTemplate = "-arg1 \"{0}\" -arg {1} -arg3 {2}";  
    for (int i = 0; i < count; i++)  
    {  
        string workingDirectory = ...;  
        string arguments = string.Format(argumentTemplate, val1, val2, val3);  

        debugTargetInfos[i] = new VsDebugTargetInfo3();....// create process; we don't already have a process to attach to  
        // create process; we don't already have a process to attach to  

        debugTargetInfos[i].dlo = (uint)DEBUG_LAUNCH_OPERATION.DLO_CreateProcess;  
        // attach managed debugger  
        debugTargetInfos[i].guidLaunchDebugEngine = VSConstants.CLSID_ComPlusOnlyDebugEngine;  
        // full path to an exe  
        debugTargetInfos[i].bstrExe = debugTargetInfos[i].bstrCurDir = workingDirectory;  
        debugTargetInfos[i].bstrArg = arguments;  
        debugTargetInfos[i].pStartupInfo = IntPtr.Zero;  

        Dictionary<string, string> environmentVariables = new Dictionary<string, string>();  
        environmentVariables.Add(CustomEnvVar, EnvVarValue);  
        // custom environment variables  
        vdebugTargetInfos[i].bstrEnv = GetEnvironmentString(environmentVariables);  
    }  
    // Merge default environment variables with custom ones above.  
    debugTargetInfos[i].LaunchFlags = (uint)__VSDBGLAUNCHFLAGS2.DBGLAUNCH_MergeEnv;....}  
    VsDebugTargetProcessInfo[] tpi = new VsDebugTargetProcessInfo[numberOfHostInstances];  
    int hr = debugger.LaunchDebugTargets3((uint)numberOfHostInstances, debugTargetInfos, tpi);  
    Marshal.ThrowExceptionForHR(hr);  

    for (int i = 0; i < count; i++)  
    {  
        processes[i] = Process.GetProcessById((int)tpi[i].dwProcessId);  
    }  
}  

private static string GetEnvironmentString(IDictionary<string, string> environment)  
{  
    if (environment == null || environment.Count == 0)  
    {  
        return null;  
    }  
// Collect all the variables as a null delimited list of key=value pairs.  
    StringBuilder result = new StringBuilder();  
    foreach (var pair in environment)  
    {  
        result.Append(pair.Key);  
        result.Append('=');  
        result.Append(pair.Value);  
        result.Append('\0');  
    }  
    // Add a final list-terminating null character. This is sent to native code as a BSTR and no null is added automatically. But the format of the data requires that this be a null-delimited, null-terminated list.  
    result.Append('\0');  
    return result.ToString();  
}  

Şunlara uygulanır