2022-12-14 (水)
[WPF] 独自のエントリーポイント Main メソッドを定義する
App.xaml により Main メソッドは自動生成されますが、独自のエントリーポイントを定義して呼び出す方法です。
環境
- .NET 7.0.101
- C# 11.0
- Visual Studio 2022 Version 17.4.3
- Windows 10 Pro 64bit 22H2 19045.2251
結果
Program.cs
Program.cs
を作成して、エントリーポイントを定義します。
using System;
namespace WpfApp;
public class Program
{
[STAThread]
public static void Main(string[] args)
{
var app = new App();
app.InitializeComponent();
app.Run();
}
}
WpfApp.csproj
<StartupObject>
の行を追加して、Program.Main()
が実行されるように設定します。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net7.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
<StartupObject>WpfApp.Program</StartupObject>
</PropertyGroup>
</Project>
備考
App.xaml
のビルドアクションは、デフォルトで アプリケーション定義
に設定されています。
明示的に設定すると、以下のようなイメージです。
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<ApplicationDefinition Include="App.xaml" />
</ItemGroup>
</Project>
ビルドすると、obj/Debug/net7.0-windows/App.g.cs
というファイルが作成され、Main メソッドが定義されています。
/// <summary>
/// App
/// </summary>
public partial class App : System.Windows.Application {
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "7.0.1.0")]
public void InitializeComponent() {
#line 5 "..\..\..\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()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "7.0.1.0")]
public static void Main() {
WpfWorldApp.App app = new WpfWorldApp.App();
app.InitializeComponent();
app.Run();
}
}
感謝
<StartupObject>
を設定する方法
App.xaml のビルドアクションを Page
にする方法
App.g.cs
の自動生成について
関連記事
新着記事