visual studio code visual-studio debugging environment-variables

code - ¿Cómo configuro variables de entorno específicas cuando se depura en Visual Studio?



visual studio code (7)

En un proyecto de biblioteca de clase, establecí la "Acción de inicio" en la pestaña Depuración de las propiedades del proyecto en "Iniciar programa externo" ( NUnit en este caso). Quiero establecer una variable de entorno en el entorno en el que se inicia este programa. ¿Cómo hago eso? (¿Es posible?)

EDITAR:

Es una variable de entorno que influye en todas las aplicaciones .NET (COMplus_Version, establece la versión en tiempo de ejecución) por lo que configurarlo en todo el sistema realmente no es una opción.

Como solución, simplemente obligué a NUnit a comenzar en la versión .NET (2.0) correcta configurándola en nunit.exe.config , aunque desafortunadamente esto también significa que todas mis pruebas de unidades .NET 1.1 ahora también se ejecutan en .NET 2.0. Probablemente debería hacer una copia del ejecutable para que pueda tener su propio archivo de configuración ...

(Estoy manteniendo la pregunta abierta (no aceptando una respuesta) en caso de que alguien descubra cómo (podría ser útil para otros fines también después de todo ...))


Comenzando con NUnit 2.5 puede usar el modificador / framework por ejemplo:

nunit-console myassembly.dll /framework:net-1.1

Esto es de las páginas de ayuda de NUnit .


Como los entornos se heredan del proceso principal, puede escribir un complemento para Visual Studio que modifique sus variables de entorno antes de realizar el inicio. No estoy seguro de lo fácil que sería ponerlo en su proceso.


Configure un archivo por lotes que pueda invocar. Pase la ruta del archivo por lotes y haga que el archivo por lotes establezca la variable de entorno y luego invoque NUnit.


En Visual Studio 2008 y Visual Studio 2005 al menos, puede especificar cambios en las variables de entorno en la configuración del proyecto.

Abra su proyecto Vaya a Proyecto -> Propiedades ... En Propiedades de configuración -> Depuración, edite el valor ''Entorno'' para establecer variables de entorno.

Por ejemplo, si desea agregar el directorio "c: / foo / bin" a la ruta al depurar su aplicación, establezca el valor ''Entorno'' en "RUTA =% RUTA%; c: / foo / bin".


En Visual Studio para Mac y C #, puede usar:

Environment.SetEnvironmentVariable("<Variable_name>", "<Value>");

Pero necesitarás el siguiente espacio de nombres

using System.Collections;

puede verificar la lista completa de variables con esto:

foreach (DictionaryEntry de in Environment.GetEnvironmentVariables()) Console.WriteLine(" {0} = {1}", de.Key, de.Value);


Si no puede usar los archivos bat para configurar su entorno, entonces su única opción probable es configurar una variable de entorno para todo el sistema. Puedes encontrar estos haciendo

  1. Haga clic derecho en "Mi computadora"
  2. Seleccionar propiedades
  3. Seleccione la pestaña "avanzada"
  4. Haga clic en el botón "variables de entorno"
  5. En la sección "Variables del sistema", agregue la nueva variable de entorno que desee
  6. "Ok" hasta el final para aceptar tus cambios

No sé si tendrías que reiniciar Visual Studio, pero parece improbable. HTH


Visual Studio 2003 no parece permitirle establecer variables de entorno para la depuración.

Lo que hago en C / C ++ es usar _putenv() en main() y establecer cualquier variable. Por lo general, lo rodeo con un #if defined DEBUG_MODE / #endif para asegurarme de que solo ciertas compilaciones lo tienen.

_putenv("MYANSWER=42");

Creo que puedes hacer lo mismo con C # usando os.putenv (), es decir

os.putenv(''MYANSWER'', ''42'');

Estos establecerán la variable de entorno solo para ese proceso de shell, y como tal es una configuración efímera, que es lo que estás buscando.

Por cierto, es bueno usar el explorador de procesos ( http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx ), que es una herramienta sysinternals. Puedes ver la copia de las variables de entorno de un proceso dado, para que puedas validar que lo que configuraste es lo que obtuviste.