هر نوع پروژه ای در Net. دارای یک Main Method است. پروژه های Asp.net Core ، Worker Service ، Console Application و حتی پروژه های WPF یا UWP ! اما اگر تابحال پروژه WPF یا UWP ایجاد کرده باشید، احتمالا متد Main را در آن نیافته اید! در ادامه مقاله با من همراه باشید تا این متد را پیدا کنیم.
محل قرار گیری متد Main در WPF کجاست
بعد از ایجاد یک پروژه جدید از نوع WPF Application در Solution Explorer گزینه Show All Files را فعال کنید.
سپس در مسیر obj>Debug به دنبال فایل App.g.i.cs بگردید.
همانطور که در تصویر فوق مشاهده می کنید، Main Method در این فایل قرار دارد. این فایل به صورت خودکار ایجاد شده و نباید آن را تغییر دهید. با این حال شاید لازم باشد متد Main در WPF را خودمان ایجاد یا Customize کنیم. اما چگونه؟
شخصی سازی متد Main در WPF
توجه داشته باشید تقریبا در هیچ پروژه ای لازم نیست این متد را دستی ایجاد کنید و عملا Customize کردن آن در بسیاری از پروژه ها کارکردی ندارد. با این حال غیر ممکن هم نیست! البته ممکن است با چالش هایی هم رو به رو شوید. پس فقط در صورت نیاز موارد زیر رو انجام بدین.
ابتدا یک کلاس با عنوان Program.cs ایجاد کنید. سپس متد Main را در آن به این شکل ایجاد کنید:
using System; namespace WPFMainMethod { public class Program { [STAThread] public static void Main(string[] args) { var app = new App(); app.InitializeComponent(); app.Run(); } } }
اکنون پروژه شما دو متد Main دارد! پس ممکن است با خطای Build مواجه شوید. در پروژه های Net Core. به بعد، برای جلو گیری از این خطا می توانید کد زیر را در فایل csproj قرار بدید:
<StartupObject>WPFMainMethod.Program</StartupObject>
به این شکل:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net6.0-windows</TargetFramework> <UseWPF>true</UseWPF> <StartupObject>WPFMainMethod.Program</StartupObject> </PropertyGroup> </Project>
با این کار ارور شما برطرف می شود. می توانید یک Break Point در متد Main جدیدی که ایجاد کردید قرار بدید تا از اجرای آن اطمینان حاصل کنید!
اگر به Properties فایل App.xaml دقت کنید، Build Action این فایل از نوع Application Definition هست. هر پروژه تنها یک فایل با این نوع از Build Action می تواند داشته باشد در غیر این صورت با خطای Build مواجه می شوید.
در پروژه های مبتنی بر Net Framework. کافی است Build Action فایل App.xaml را به Page تغییر دهید. اما این کار در پروژه های Net Core. به بعد امکان پذیر نیست و با خطا مواجه می شوید. (از کدی که بالا تر اشاره کردم در فایل csproj استفاده کنید)
منابع :
سورس کد پروژه : https://github.com/softamoz/WPFMainMethod