이 문서는 보이지 않지만 vNext처럼 보이지만 비 정적 메서드 void Main()
을 사용하면 행복하게 컴파일하고 응용 프로그램을 실행할 수 있습니다. 실제로 새 콘솔 응용 프로그램 템플릿은 정적이 아닌 Main을 제공합니다. 예를 들어 :vNext 기본 입력 방법 선택
public class Program
{
public Guid MyGuid { get; set; } = Guid.NewGuid();
void Main()
{
Console.WriteLine("Hello World {0}", MyGuid);
Console.ReadLine();
}
}
MyGuid
인스턴스화하고 비어 있지 않은 GUID를 여기에있다. 그래서 나는 그것이 내 프로그램 클래스의 인스턴스를 생성하고 거기에서부터 진행된다고 가정하고 있습니다. 프로젝트 속성에서
public class Program
{
void Main()
{
Console.WriteLine("main no args");
Console.ReadLine();
}
void Main(string[] args)
{
Console.WriteLine("main with args {0}", string.Join(", ",args));
Console.ReadLine();
}
}
내가 인수 arg1
및 arg2
을 준 : 나는 두 Mains
이있을 때
내 질문입니다. 그러나, 내 콘솔을 실행하면 main no args
이 표시됩니다. 인수가없는 Main
인수를 제거하면 예상 출력이 main with args arg1, arg2
이됩니다.
이제 코드의 메서드 순서를 변경하면 인수가있는 Main
이 발생합니다. 인수를 제거하면 Main
인수가 이고 여전히이라고 표시되고 main with args
으로 인쇄됩니다.
Roslyn이 정확하게 Main
을 선택하는 방법에 대한 설명이 필요합니다. 항상 첫 번째 것입니까? 나는 이것이 문서화되어 있다고 확신하지만 그것을 발견 할 수 없다.
내가 Program
외에 뭔가 내 클래스 이름을 변경하는 경우
편집, 내 콘솔 응용 프로그램을 실행하고, 바로 내가 적절한 엔트리 포인트가없는 말해 충돌합니다. 그래서 내 최고의 추측이다 the first Main method in the Program class
"너무 광범위"가까운 투표를 잘 모르겠습니다. 이것은 매우 좁게 초점을 맞춘 질문입니다. –