প্রোগ্রামিংয়ের ক্ষেত্রে আমি শিক্ষানবিস তবে আমি নিশ্চিত যে সর্বজনীন নিয়মের একটি হ'ল একটি প্রোগ্রাম মেইন () দিয়ে শুরু হয়। আমি যখন ডাব্লুপিএফ প্রকল্প তৈরি করি তখন আমি একটিও দেখতে পাই না। মেইন () কেবল ডাব্লুপিএফ-তে আলাদাভাবে কিছু নামকরণ করা হয়েছে?
প্রোগ্রামিংয়ের ক্ষেত্রে আমি শিক্ষানবিস তবে আমি নিশ্চিত যে সর্বজনীন নিয়মের একটি হ'ল একটি প্রোগ্রাম মেইন () দিয়ে শুরু হয়। আমি যখন ডাব্লুপিএফ প্রকল্প তৈরি করি তখন আমি একটিও দেখতে পাই না। মেইন () কেবল ডাব্লুপিএফ-তে আলাদাভাবে কিছু নামকরণ করা হয়েছে?
উত্তর:
এটি নির্মাণের সময় উত্পন্ন হয়, তবে আপনি নিজের নিজস্ব সরবরাহ করতে পারেন (এটি প্রয়োজনীয় হিসাবে প্রকল্প-সম্পত্তিগুলিতে ছড়িয়ে দেওয়া)। কোনও অ্যাপ্লিকেশন ফাইলের জন্য আপত্তি / ডিবাগের দিকে তাকান; আমার সাথে ("সি # 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()
এবং যতবারই আমি আমার প্রকল্পটি পুনর্নির্মাণ করব, এটি আপনার যা আছে তা এখানে ফিরিয়ে দেবে। অন্য একটি ক্লাসে আমার নিজের তৈরি করার চেষ্টা করা হয়েছিল, তবে প্রকল্পের বৈশিষ্ট্যগুলি কেবলমাত্র অন্য শ্রেণীর নয়, মাইপ্রজেক্ট.অ্যাপটিকে সন্ধান করে so
App.xaml.cs
ভিজ্যুয়াল স্টুডিওতে খুলুন । নেভিগেশন বার ব্যবহার করুন> পদ্ধতি ড্রপ ডাউন তালিকা> নির্বাচন করুন Main
(গ্রেড আউট)। এই প্রদর্শন করা হয় App.g.i.cs
।
মেইন () পদ্ধতিটি স্বয়ংক্রিয়ভাবে তৈরি হয়। আপনি যদি নিজের নিজস্ব সরবরাহ করতে চান তবে আপনাকে (ভিএস ২০১৩ এবং ভিএস ২০১7 এ পরীক্ষা করা) করতে হবে:
তারপরে App.xaml.cs এ কেবল একটি মেইন () পদ্ধতি যুক্ত করুন। এটি এর মতো হতে পারে:
[STAThread]
public static void Main()
{
var application = new App();
application.InitializeComponent();
application.Run();
}
Main()
সিএলআর এবং ডাব্লুপিএফ দ্বারা স্বয়ংক্রিয়ভাবে সরবরাহ করা হয়।
সি # সংকলক একটি কমান্ড-লাইন স্যুইচ নেয় /m
যা প্রকারভেদ রয়েছে এমন ধরণের নির্দিষ্ট করে Main()
। কনভেনশন অনুসারে, কোনও স্টার্টআপ অবজেক্ট যদি স্পষ্টভাবে নির্দিষ্ট না করা হয়, তবে সিএলআর স্ট্যাটিক পদ্ধতিযুক্ত যে কোনও শ্রেণীর সন্ধান Main()
করবে এবং এটিকে ডাকবে। (@ মার্ক কঙ্কর তার মন্তব্যে উল্লেখ করেছেন)
ডাব্লুপিএফ-এর ক্ষেত্রে, Main()
তৈরি হওয়ার পরে স্বয়ংক্রিয়ভাবে উত্পন্ন App.xaml
হয় এবং সি # সংকলকটি শ্রেণিটি প্রবেশের পয়েন্ট হিসাবে ব্যবহার করার জন্য / এম সুইচ নির্দিষ্ট করা হয়। তবে আপনি যদি প্রকল্পের বৈশিষ্ট্যগুলি লক্ষ্য করেন তবে আপনি স্টার্টআপ অবজেক্টটি বেছে নেওয়ার জন্য একটি সেটিংস পাবেন। আপনি যদি চান তবে আপনার নিজের ক্লাস সরবরাহ করতে পারেন যা প্রয়োগ করে Main()
।
মনে রাখবেন যে ডাব্লুপিএফ অবকাঠামো সঠিকভাবে শুরু হয়েছে কিনা তা নিশ্চিত করার জন্য এটি আপনার উপর দায় চাপিয়ে দেবে Application
এবং তার Run()
পদ্ধতিটি কল করবে।
/m
এটা না যত্ন কি ধরনের বলা হয়; আপনি যদি স্পষ্ট না হন তবে এটি কোনও উপযুক্ত Main
পদ্ধতি সন্ধান করার চেষ্টা করে এবং যদি এটি এক বা একাধিক পাওয়া যায় তবে অভিযোগ করে। উদাহরণ হিসাবে, ভাষা বিশেষে "হ্যালো ওয়ার্ল্ড" নমুনা (§1.1) Hello
প্রকারের নাম হিসাবে ব্যবহার করে।
main()
সিএলআর (রানটাইম) সরবরাহ করে বলে সত্যই সঠিক নয় , এটি সত্যই সংকলক এটি তৈরি করে।
MyApp.App app = new MyApp.App();
) .Run()
এ যুক্ত করতে Main()
হবে এবং পূর্বের মতো এটিতে কল করতে হবে। ভাল কল. এছাড়াও, app.InitializeComponent();
পূর্বে যুক্ত করতে হবে app.Run()
, এবং সৌভাগ্যক্রমে আমাদের জন্য, মূল InitializeComponent()
পদ্ধতিটি এখনও রয়েছে (App.g.cs এ দেখা গেছে, সুতরাং এটি আবার যুক্ত করার দরকার নেই!)।
main()
কোনও অ্যাপ্লিকেশনের জন্য একটি স্ট্যান্ডার্ড এন্ট্রি পয়েন্ট, তবে সমস্ত অ্যাপ্লিকেশন সেভাবে কাঠামোগত হয়। একটি এক্সএএমএল প্রকল্পে, অ্যাপ.এএমএএমএল ফাইলটি যেখানে লেখা আছে সেখানে প্রবেশের পয়েন্টটি নির্দিষ্ট করে StartupUri="MainWindow.xaml"
।
যেমনটি অন্যদের দ্বারা বলা হয়েছে, প্রকৃত মূল ফাংশনটি প্রকল্পের এক্সএএমএল ফাইলের সামগ্রীর উপর ভিত্তি করে তৈরি করা হয়।
আমি এমন ফাইলগুলি অনুলিপি করেছি যা অন্য কোনও প্রকল্পে লোড হবে না যা মাইনওয়াইন্ডোহীন ছিল একটি নতুন প্রকল্পে এবং এই ত্রুটিটি পেয়েছে।
আমার জন্য এটি ঠিক করতে Andreas Kahler এর বিপরীত পদ্ধতির কাজটি গ্রহণ করেছে:
একটি উইন্ডো ফাইল তৈরি করার পরে এবং এই ফাইলটিতে স্টার্টআপ ইউরি সেট করার পরে আমি অ্যাপ্লিকেশনএক্সএএমএল 'বিল্ড অ্যাকশন' বৈশিষ্ট্যটির পৃষ্ঠাটি অ্যাপ্লিকেশন ডেফিনিশনটিতে স্যুইচ করেছি।
আপনি যদি ডিফল্ট 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>