프로그래밍에 관해서는 초보자이지만 보편적 인 규칙 중 하나는 프로그램이 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>
