[C#] WPF에 Main ()이 없습니까?

프로그래밍에 관해서는 초보자이지만 보편적 인 규칙 중 하나는 프로그램이 Main ()으로 시작한다는 것입니다. WPF 프로젝트를 만들 때 보이지 않습니다. WPF에서 Main ()의 이름이 다른 것입니까?



답변

빌드 중에 생성되지만 직접 제공 할 수 있습니다 (필요에 따라 프로젝트 속성에서 명확하게 표시). obj / debug에서 앱 파일을 찾으십시오. 나는 ( “C # 2010 익스프레스”의 제공)가 App.g.i.cs와를 :

namespace WpfApplication1 {


    /// <summary>
    /// App
    /// </summary>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
    public partial class App : System.Windows.Application {

        /// <summary>
        /// InitializeComponent
        /// </summary>
        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        public void InitializeComponent() {

            #line 4 "..\..\..\App.xaml"
            this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);

            #line default
            #line hidden
        }

        /// <summary>
        /// Application Entry Point.
        /// </summary>
        [System.STAThreadAttribute()]
        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        public static void Main() {
            WpfApplication1.App app = new WpfApplication1.App();
            app.InitializeComponent();
            app.Run();
        }
    }
}


답변

Main () 메소드가 자동으로 작성됩니다. 직접 제공하려면 VS2013 및 VS2017에서 테스트해야합니다.

  • 솔루션 탐색기에서 App.xaml을 마우스 오른쪽 단추로 클릭하고 속성을 선택하십시오.
  • ‘빌드 조치’를 ‘페이지’로 변경하십시오 (초기 값은 ‘ApplicationDefinition’입니다).

그런 다음 App.xaml.cs에 Main () 메서드를 추가하십시오. 다음과 같이 될 수 있습니다.

[STAThread]
public static void Main()
{
    var application = new App();
    application.InitializeComponent();
    application.Run();
}


답변

Main() CLR과 WPF에 의해 자동으로 제공됩니다.

C # 컴파일러는 /m의 구현을 포함하는 유형을 지정 하는 명령 행 스위치 를 사용합니다 Main(). 일반적으로 시작 객체를 명시 적으로 지정하지 않으면 CLR은 정적 Main()메서드 가있는 모든 클래스를 조회하여 호출합니다. (@Marc Gravel이 그의 의견에서 지적한 것처럼)

WPF의 경우 C # 컴파일러가 해당 클래스를 진입 점으로 사용하도록 / m 스위치가 지정 Main()될 때 자동으로 생성됩니다 App.xaml. 그러나 프로젝트 속성을 보면 시작 개체를 선택할 수있는 설정이 있습니다. 따라서 원하는 경우을 구현하는 고유 한 클래스를 제공 할 수 있습니다 Main().

이 경우 Application인스턴스 를 생성 하고 호출 해야 할 책임이 있습니다.Run() 메소드를 하여 WPF 인프라가 올바르게 시작되는지 확인해야합니다.


답변

Main()컴파일 중에 생성됩니다. 당신은 그것을에서 찾을 수 있습니다 App.g.cs(에서 obj/{Debug,Release}폴더).


답변

main()응용 프로그램의 표준 진입 점이지만 모든 응용 프로그램은 그런 식으로 구성됩니다. XAML 프로젝트에서 App.XAML 파일은 파일의 시작 지점을 지정합니다.StartupUri="MainWindow.xaml" .

다른 사람들이 언급했듯이 실제 주요 기능은 프로젝트의 XAML 파일 내용을 기반으로 생성됩니다.


답변

메인 윈도우가없는 다른 프로젝트에서로드되지 않는 파일을 새 파일로 복사 하고이 오류가 발생했습니다.

나를 위해 Andreas Kahler와 반대되는 접근 방식으로 수정했습니다.

창 파일을 만들고 시작 파일을이 파일로 설정 한 후 페이지를 App.xaml ‘Build Action’속성의 ApplicationDefinition으로 전환했습니다.


답변

기본 App.xaml 및 MinWindow.xaml을 제거한 경우 .csproj를 편집하는 것이 좋습니다. App.xaml을 수동으로 추가 한 후 .csproj는 다음과 같습니다.

<Page Include ="App.xaml">
       <DependentUpon>MSBuild:Compile</DependentUpon>
       <SubType>Code</SubType>
</Page>

이것을 다음으로 변경하십시오.

<ApplicationDefinition Include="App.xaml">
    <Generator>MSBuild:Compile</Generator>
    <SubType>Designer</SubType>
</ApplicationDefinition>