VsDebugTargetInfo3.bstrEnv Feld
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
BSTR mit benutzerdefinierten Umgebungsvariablen (DLO_CreateProcess).
public: System::String ^ bstrEnv;
public: Platform::String ^ bstrEnv;
std::wstring bstrEnv;
public string bstrEnv;
val mutable bstrEnv : string
Public bstrEnv As String
Feldwert
Hinweise
Dieses Feld wird verwendet, um benutzerdefinierte Umgebungsvariablen festzulegen. Beachten Sie, dass bstrenv ein mit NULL endender Block mit null-terminierten Zeichen folgen sein sollte. Sie müssen auch die DBGLAUNCH_MergeEnv in launchflags übergeben, um anzugeben, dass die standardmäßigen System Umgebungsvariablen mit den von Ihnen angegebenen Informationen zusammengeführt werden sollen. Weitere Informationen finden Sie im Abschnitt zum lpEnvironment Thema " kreateprocess".
Im folgenden Beispiel wird das Feld ordnungsgemäß festgelegt.
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();
}