programing

WPF에 기본()이 없습니까?

testmans 2023. 5. 10. 20:33
반응형

WPF에 기본()이 없습니까?

저는 프로그래밍에 관해서는 초보자이지만 일반적인 규칙 중 하나는 프로그램이 메인()으로 시작한다는 것이라고 확신했습니다.WPF 프로젝트를 생성할 때 해당 프로젝트가 표시되지 않습니다.메인()은 WPF에서 단순히 이름이 다른 것입니까?

기본() 메서드가 자동으로 생성됩니다.자체 솔루션을 제공하려면 다음 작업을 수행해야 합니다(VS2013, VS2017 및 VS2019에서 테스트됨).

  • 솔루션 탐색기에서 App.xaml을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.
  • 'Build Action'을 'Page'로 변경합니다(초기값은 'ApplicationDefinition').

그런 다음 Main() 메서드를 App.xaml.cs 에 추가합니다.다음과 같을 수 있습니다.

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

빌드 중에 생성되지만 사용자가 직접 제공할 수 있습니다(필요에 따라 프로젝트 속성에서 명확하게 구분).에서 앱 (" 제공) obj/debug 파일이 ("C# 2010 Express")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()CLR 및 WPF에 의해 자동으로 제공됩니다.

C#을 합니다./m는 의구을포유지정다니합형의 합니다.Main()되지 않은 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 을 가진 합니다.Main()방법과 부를 것입니다. (@Mark Gravel이 그의 논평에서 지적했듯이)

, WPF는Main() 자동으로 됩니다.App.xamlC# 컴파일러가 해당 클래스를 진입점으로 사용하도록 /m 스위치를 지정합니다.그러나 프로젝트 속성을 보면 시작 개체를 선택할 수 있는 설정이 있습니다.그래서 만약 당신이 원한다면, 당신은 당신만의 수업을 제공할 수 있습니다.Main().

이것은 당신에게 다음을 만드는 책임을 지게 할 것입니다.Application 예를들그것부릅니다을어▁its다부▁and▁instance니라고 부릅니다.Run()WPF 인프라가 제대로 시작되었는지 확인하는 방법입니다.

Main()컴파일 중에 생성됩니다.에서 확인할 수 있습니다.App.g.cs단위:)()obj/{Debug,Release}폴더)를 선택합니다.

main()는 응용프로그램의 표준 진입점이지만 모든 응용프로그램은 이러한 방식으로 구성됩니다.XAML 프로젝트에서 앱.XAML 파일은 다음과 같은 입력 지점을 지정합니다.StartupUri="MainWindow.xaml".

다른 분들이 말씀하신 것처럼 프로젝트 내 XAML 파일의 내용을 바탕으로 실제 메인 기능이 생성됩니다.

기본 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>

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

저는 Andreas Kahler와 반대의 접근 방식을 사용하여 다음과 같은 문제를 해결했습니다.

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

언급URL : https://stackoverflow.com/questions/2694680/no-main-in-wpf

반응형