답변:
빌드 중에 생성되지만 직접 제공 할 수 있습니다 (필요에 따라 프로젝트 속성에서 명확하게 표시). 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();
}
}
}
App.g.cs
있습니다. 그러나 나는 Main()
프로젝트 를 추가 할 때마다 추가하려고 노력했으며 , 여기에있는 것으로 되돌릴 것입니다. 다른 클래스에서 내 클래스를 만들려고했지만 프로젝트 속성이 다른 클래스가 아닌 MyProject.App 만 발견하므로 리디렉션 할 수 없습니다.
App.xaml.cs
Visual Studio에서 엽니 다 . 탐색 줄> 방법 드롭 다운 목록> 선택 Main
(회색으로 표시)을 사용하십시오. 이것은 당신을 데려갑니다 App.g.i.cs
.
Main () 메소드가 자동으로 작성됩니다. 직접 제공하려면 VS2013 및 VS2017에서 테스트해야합니다.
그런 다음 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 인프라가 올바르게 시작되는지 확인해야합니다.
/m
그것이 없으면 유형이 무엇인지 상관 하지 않습니다 . 당신은 명시하지 않은 경우 그냥 찾으려고 어떤 적합Main
방법을, 그리고 0 또는 하나 이상을 발견하면 뿌려줍니다. 예를 들어 언어 사양 (§1.1)의 "Hello World"샘플 Hello
이 유형 이름으로 사용 됩니다.
main()
CLR (런타임)에서 제공하는 것은 실제로 정확하지 않으며 실제로 CLR을 생성하는 컴파일러입니다.
MyApp.App app = new MyApp.App();
하고 호출 해야 할 것을 상기시키기 위해 +1을 추가했습니다 . 잘 했어 또한 전에 추가 해야 하며 다행히도 원래 방법이 여전히 있습니다 (App.g.cs에서 볼 수 있으므로 다시 추가 할 필요가 없습니다!). .Run()
Main()
app.InitializeComponent();
app.Run()
InitializeComponent()
기본 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>