Visual Studio에서 디버깅할 때 특정 환경 변수를 어떻게 설정하나요?
-
01-07-2019 - |
문제
클래스 라이브러리 프로젝트에서 프로젝트 속성의 디버그 탭에 있는 "시작 작업"을 "외부 프로그램 시작"(NUnit 이 경우).이 프로그램이 시작되는 환경에 환경 변수를 설정하고 싶습니다.어떻게 해야 하나요?(그것도 가능할까요?)
편집하다:
이는 모든 .NET 애플리케이션(COMplus_Version, 런타임 버전 설정)에 영향을 미치는 환경 변수이므로 시스템 전체에 걸쳐 설정하는 것은 실제로 옵션이 아닙니다.
해결 방법으로 NUnit을 올바른 .NET 버전(2.0)에서 설정하여 시작하도록 했습니다. nunit.exe.config
, 불행하게도 이는 모든 .NET 1.1 단위 테스트가 이제 .NET 2.0에서도 실행된다는 의미이기도 합니다.아마도 자체 구성 파일을 가질 수 있도록 실행 파일의 복사본을 만들어야 할 것입니다 ...
(누군가가 방법을 알아낼 경우를 대비해 질문을 열어두었습니다(답변을 받아들이지 않음). (결국 다른 목적에도 유용할 수 있습니다...)
다른 팁
Visual Studio 2003에서는 디버깅을 위한 환경 변수 설정을 허용하지 않는 것 같습니다.
C/C++에서 내가 하는 일은 다음과 같습니다. _putenv()
~에 main()
그리고 변수를 설정하세요.보통 나는 그것을 다음과 같이 둘러 쌉니다. #if defined DEBUG_MODE / #endif
특정 빌드에만 해당 기능이 있는지 확인하세요.
_putenv("MYANSWER=42");
os.putenv()를 사용하여 C#에서도 동일한 작업을 수행할 수 있다고 생각합니다.
os.putenv('MYANSWER', '42');
이는 해당 쉘 프로세스에 대해서만 환경 변수를 설정하므로 찾고 있는 임시 설정입니다.
그런데 프로세스 탐색기를 사용하는 것이 좋습니다(http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx), 이는 sysinternals 도구입니다.특정 프로세스의 환경 변수 복사본이 무엇인지 확인할 수 있으므로 설정한 내용이 얻은 내용인지 확인할 수 있습니다.
Mac 및 C#용 Visual Studio에서는 다음을 사용할 수 있습니다.
Environment.SetEnvironmentVariable("<Variable_name>", "<Value>");
하지만 다음 네임스페이스가 필요합니다.
using System.Collections;
다음을 사용하여 전체 변수 목록을 확인할 수 있습니다.
foreach (DictionaryEntry de in Environment.GetEnvironmentVariables())
Console.WriteLine(" {0} = {1}", de.Key, de.Value);
NUnit 2.5부터 다음과 같이 /framework 스위치를 사용할 수 있습니다.
nunit-console myassembly.dll /framework:net-1.1
이것은에서 온 것입니다 NUnit의 도움말 페이지.
환경을 설정하기 위해 bat 파일을 사용할 수 없는 경우 가능한 유일한 옵션은 시스템 전체 환경 변수를 설정하는 것입니다.다음을 수행하여 찾을 수 있습니다.
- "내 컴퓨터"를 마우스 오른쪽 버튼으로 클릭하세요.
- 속성 선택
- "고급" 탭을 선택하세요
- "환경변수" 버튼을 클릭하세요.
- "시스템 변수" 섹션에서 원하는 새 환경 변수를 추가합니다.
- "확인"을 눌러 변경 사항을 수락하세요.
Visual Studio를 다시 시작해야 하는지는 모르겠지만 그럴 것 같지는 않습니다.HTH
호출할 수 있는 배치 파일을 설정합니다.배치 파일의 경로를 전달하고 배치 파일에 환경 변수를 설정한 다음 NUnit을 호출합니다.
환경은 상위 프로세스에서 상속되므로 시작을 수행하기 전에 환경 변수를 수정하는 Visual Studio용 추가 기능을 작성할 수 있습니다.귀하의 프로세스에 적용하는 것이 얼마나 쉬운지 잘 모르겠습니다.