[c#] 디버깅 할 때 인수로 프로그램을 시작하려면 어떻게합니까?

Visual Studio 2008에서 프로그램을 디버깅하고 싶습니다. 문제는 인수를 얻지 못하면 종료된다는 것입니다. 이것은 주요 방법에서 가져온 것입니다.

if (args == null || args.Length != 2 || args[0].ToUpper().Trim() != "RM")
{
    Console.WriteLine("RM must be executed by the RSM.");
    Console.WriteLine("Press any key to exit program...");
    Console.Read();
    Environment.Exit(-1);
}

나는 그것을 주석 처리하고 컴파일 할 때 다시 들어가기를 원하지 않습니다. 디버깅 할 때 인수로 프로그램을 시작하려면 어떻게해야합니까? 시작 프로젝트로 설정됩니다.



답변

로 이동하십시오 Project-><Projectname> Properties. 그런 다음 Debug탭을 클릭하고 라는 텍스트 상자에 인수를 입력합니다 Command line arguments.


답변

다음과 같은 지시문을 사용하는 것이 좋습니다 .

        static void Main(string[] args)
        {
#if DEBUG
            args = new[] { "A" };
#endif

            Console.WriteLine(args[0]);
        }

행운을 빕니다!


답변

내 제안은 단위 테스트를 사용하는 것입니다.

응용 프로그램에서 다음 스위치를 수행하십시오 Program.cs.

#if DEBUG
    public class Program
#else
    class Program
#endif

static Main(string[] args).

또는 다음 을 추가하여 Friend Assemblies 를 사용할 수도 있습니다.

[assembly: InternalsVisibleTo("TestAssembly")]

귀하의 AssemblyInfo.cs.

그런 다음 단위 테스트 프로젝트와 다음과 같은 테스트를 만듭니다.

[TestClass]
public class TestApplication
{
    [TestMethod]
    public void TestMyArgument()
    {
        using (var sw = new StringWriter())
        {
            Console.SetOut(sw); // this makes any Console.Writes etc go to sw

            Program.Main(new[] { "argument" });

            var result = sw.ToString();

            Assert.AreEqual("expected", result);
        }
    }
}

이렇게하면 코드를 편집하거나 메뉴 설정을 변경할 필요없이 자동화 된 방식으로 여러 인수 입력을 테스트 할 수 있습니다.


답변

명령 줄 매개 변수에 민감한 정보가 있고 코드 저장소에 저장하는 것을 원하지 않았기 때문에이 페이지를 방문했습니다. 시스템 환경 변수를 사용하여 각 목적에 따라 필요에 따라 각 빌드 또는 개발 시스템에 설정할 수있는 값을 보유하고있었습니다. 환경 변수 확장은 셸 배치 프로세스에서 훌륭하게 작동하지만 Visual Studio에서는 작동하지 않습니다.

Visual Studio 시작 옵션 :

Visual Studio 시작 옵션

그러나 Visual Studio는 변수 값이 아니라 변수 이름을 반환합니다.

문제의 예 :

Visual Studio의 오류 예

여기에서 여러 가지를 시도한 후 최종 솔루션은 내 인수 프로세서에서 환경 변수에 대한 빠른 조회를 작성하는 것입니다. 들어오는 변수 값에 %에 대한 확인을 추가하고 발견되면 환경 변수를 찾아 값을 바꿉니다. 이것은 Visual Studio와 내 빌드 환경에서 작동합니다.

foreach (string thisParameter in args)
            {
                if (thisParameter.Contains("="))
                {
                    string parameter = thisParameter.Substring(0, thisParameter.IndexOf("="));
                    string value = thisParameter.Substring(thisParameter.IndexOf("=") + 1);

                    if (value.Contains("%"))
                    {   //Workaround for VS not expanding variables in debug
                        value = Environment.GetEnvironmentVariable(value.Replace("%", ""));
                    }

이를 통해 샘플 배치 파일과 Visual Studio를 사용한 디버깅에서 동일한 구문을 사용할 수 있습니다. GIT에 저장된 계정 정보 또는 URL이 없습니다.

배치에서 사용 예

배치 파일 예


답변

대한 비주얼 스튜디오 코드 :

  • launch.json파일 열기
  • 구성에 인수를 추가하십시오.

“args”: [ “일부 인수”, “다른 인수”],


답변