Como faço para definir variáveis ??de ambiente específicas quando a depuração no Visual Studio?

StackOverflow https://stackoverflow.com/questions/100543

Pergunta

Em um projeto de biblioteca de classe, eu definir o "Start Ação" na guia de depuração das propriedades do projeto para "Iniciar programa externo" ( NUnit neste caso). Eu quero definir uma variável de ambiente no ambiente este programa é iniciado no. Como posso fazer isso? (Será que é mesmo possível?)

EDIT:

É uma variável de ambiente que influencia todos os aplicativos .NET (COMplus_Version, ele define a versão de tempo de execução) para que defini-lo em todo o sistema realmente não é uma opção.

Como alternativa eu ??só forçado NUnit para começar na versão .NET direito (2,0), fixando-o em nunit.exe.config, embora, infelizmente, isso também significa que todos os meus .NET 1.1 testes de unidade estão agora também executar no .NET 2.0. Eu provavelmente só deve fazer uma cópia do executável para que ele possa ter o seu próprio arquivo de configuração ...

(estou mantendo a questão em aberto (não aceitar uma resposta) no caso de alguém acontece para saber como (ele pode ser útil para outros fins também depois de tudo ...))

Foi útil?

Solução

No Visual Studio 2008 e Visual Studio 2005, pelo menos, você pode especificar alterações em variáveis ??de ambiente nas configurações do projeto.

Abra o seu projeto. Ir para Projeto -> Propriedades ... Em Propriedades de configuração -.> Depuração, editar o valor 'Ambiente' para as variáveis ??de ambiente set

Por exemplo, se você quiser adicionar o diretório "c: \ foo \ bin" para o caminho ao depurar sua aplicação, defina o valor 'Ambiente' para "PATH =% PATH%; c: \ foo \ bin" .

 Aqui está uma imagem da caixa de diálogo configurações

Outras dicas

Visual Studio 2003 não parece permitir que você variáveis ??de ambiente definidas para depuração.

O que eu faço em C / C ++ é o uso _putenv() em main() e definir todas as variáveis. Normalmente eu cercá-lo com um #if defined DEBUG_MODE / #endif para certificar-se apenas alguns constrói tê-lo.

_putenv("MYANSWER=42");

Eu acredito que você pode fazer a mesma coisa com C os.putenv # usando (), i.

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

Estes irão definir a variável envrironment para esse processo shell apenas, e como tal é um cenário efêmero, que é o que você está procurando.

A propósito, é bom para uso Process Explorer ( http: // technet.microsoft.com/en-us/sysinternals/bb896653.aspx ), que é uma ferramenta Sysinternals. Você pode ver o que um determinado processo copiar das variáveis ??de ambiente é, para que possa validar que o que você conjunto é o que você tem.

No Visual Studio para Mac e C # você pode usar:

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

Mas você vai precisar do seguinte namespace

using System.Collections;

Você pode verificar a lista completa das variáveis ??com este:

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

Começando com NUnit 2.5 você pode usar / switch framework por exemplo:.

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

Esta é a partir do NUnit páginas de ajuda .

Se você não pode usar arquivos de morcego para configurar o seu ambiente, então sua única opção provável é a criação de uma grande variável de ambiente do sistema. Você pode encontrá-los, fazendo

  1. Botão direito do mouse "Meu Computador"
  2. selecione Propriedades
  3. Selecione a aba "Avançado"
  4. Clique no botão "variáveis ??de ambiente"
  5. Na seção "Variáveis ??do sistema", adicionar a nova variável de ambiente que você deseja
  6. "Ok" todo o caminho para aceitar as alterações

Eu não sei se você teria que reiniciar visual studio, mas parece improvável. HTH

Configurar um arquivo de lote que você pode invocar. Passar o caminho do arquivo de lote, e ter o arquivo de lote definir a variável de ambiente e, em seguida, invocar NUnit.

Como os ambientes são herdadas do processo pai, você poderia escrever um add-in para o Visual Studio que modifica suas variáveis ??de ambiente antes de executar o início. Não estou certo de quão fácil seria para colocar em seu processo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top