Pregunta

En un proyecto de biblioteca de clases, configuré "Iniciar acción" en la pestaña Depurar de las propiedades del proyecto en "Iniciar programa externo" (Unidad N en este caso).Quiero establecer una variable de entorno en el entorno en el que se inicia este programa.¿Cómo puedo hacer 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 configurarla en todo el sistema realmente no es una opción.

Como solución alternativa, simplemente obligué a NUnit a iniciarse en la versión correcta de .NET (2.0) configurándolo en nunit.exe.config, aunque desafortunadamente esto también significa que todas mis pruebas unitarias de .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...

(Mantendré la pregunta abierta (no acepto una respuesta) en caso de que alguien descubra cómo (después de todo, también podría ser útil para otros propósitos...))

¿Fue útil?

Solución

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

Abre tu 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 "PATH=%PATH%;c:\foo\bin".

Here

Otros consejos

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

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

_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á buscando.

Por cierto, es bueno usar el explorador de procesos (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx), que es una herramienta sysinternals.Puede ver cuál es la copia de las variables de entorno de un proceso determinado, de modo que pueda validar que lo que configuró es lo que obtuvo.

En Visual Studio para Mac y C# puedes usar:

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

Pero necesitarás el siguiente espacio de nombres.

using System.Collections;

Puedes consultar la lista completa de variables con esto:

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

A partir de NUnit 2.5 puedes usar el modificador /framework, por ejemplo:

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

Esto es de Páginas de ayuda de NUnit.

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

  1. Haga clic derecho en "Mi PC"
  2. Seleccionar propiedades
  3. Seleccione la pestaña "avanzado"
  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 los cambios.

No sé si tendrías que reiniciar Visual Studio, pero parece poco probable.HT

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.

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 incluirlo en su proceso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top