VsDebugTargetInfo4.bstrEnv Campo
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
BSTR que contém variáveis de ambiente personalizadas ( DLO_CreateProcess ).
public: System::String ^ bstrEnv;
public: Platform::String ^ bstrEnv;
std::wstring bstrEnv;
public string bstrEnv;
val mutable bstrEnv : string
Public bstrEnv As String
Valor do campo
Comentários
Esse campo é usado para definir variáveis de ambiente personalizadas. Observe que bstrEnv deve ser um bloco de cadeias de caracteres terminadas em nulo. Você também deve passar o DBGLAUNCH_MergeEnv em LaunchFlags para especificar que deseja que as variáveis de ambiente do sistema padrão sejam mescladas com o que você está especificando. Para obter mais informações, consulte a seção sobre lpEnvironment no tópico CreateProcess.
Veja a seguir um exemplo de como definir esse campo corretamente.
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();
}