<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Feruzbek Raximboyev</title>
    <description>The latest articles on Forem by Feruzbek Raximboyev (@feruzbek_raximboyev_bc9d5).</description>
    <link>https://forem.com/feruzbek_raximboyev_bc9d5</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2201916%2F0ab89362-c5e9-4fba-998d-5db9a3b6f60a.png</url>
      <title>Forem: Feruzbek Raximboyev</title>
      <link>https://forem.com/feruzbek_raximboyev_bc9d5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/feruzbek_raximboyev_bc9d5"/>
    <language>en</language>
    <item>
      <title>Dependency Injection Container and Service Lifetimes</title>
      <dc:creator>Feruzbek Raximboyev</dc:creator>
      <pubDate>Mon, 18 Nov 2024 20:50:59 +0000</pubDate>
      <link>https://forem.com/feruzbek_raximboyev_bc9d5/dependency-injection-container-and-service-lifetimes-2569</link>
      <guid>https://forem.com/feruzbek_raximboyev_bc9d5/dependency-injection-container-and-service-lifetimes-2569</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;• Dependency Injection Container nima?&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dependency Injection Container&lt;/strong&gt; - qisqacha &lt;strong&gt;&lt;code&gt;DI Container&lt;/code&gt;&lt;/strong&gt; &lt;strong&gt;&lt;code&gt;Dependency Injectionni&lt;/code&gt;&lt;/strong&gt; amalga oshiruvchi mexanizm bo'lib, uning vazifasi dasturdagi servicelarni &lt;strong&gt;&lt;code&gt;ro'yxatga olish&lt;/code&gt;&lt;/strong&gt;, servicelarga kerakli bo'lgan boshqa service obyektlarini servicening konstruktoriga tashqaridan &lt;strong&gt;&lt;code&gt;Inject&lt;/code&gt;&lt;/strong&gt; qilib berishdir.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;• Dependency Injection nima?&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dependency Injection&lt;/strong&gt; — tashqi manbaga muhtoj har bir class o'ziga kerakli boshqa class obyektlarini shu classning o'zida yaratish o'rniga DI konteynerdan olish orqali kamroq bog‘lanish va yaxshiroq test qilinishni ta'minlaydigan &lt;strong&gt;&lt;code&gt;dizayn patterndir&lt;/code&gt;&lt;/strong&gt;. DI dan foydalanish kodni ancha &lt;strong&gt;&lt;code&gt;moslashuvchan&lt;/code&gt;&lt;/strong&gt;va osonlikcha &lt;strong&gt;&lt;code&gt;kengayuvchan&lt;/code&gt;&lt;/strong&gt;holatga olib keladi. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;• Eslatma!&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;Host yaratish&lt;/code&gt;&lt;/strong&gt; va &lt;strong&gt;&lt;code&gt;Dependency Injectiondan&lt;/code&gt;&lt;/strong&gt; foydalanish uchun Microsoftning &lt;strong&gt;&lt;code&gt;High level&lt;/code&gt;&lt;/strong&gt; darajadagi kutubxonalari.&lt;/p&gt;


&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Extensions.Hosting&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Extensions.DependencyInjection&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;• .NET da Host Application yaratish.&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;

&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Extensions.Hosting&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Extensions.DependencyInjection&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HostApplicationBuilder&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;//ushbu qatorda DI Containerga servicelar qo'shiladi&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Build&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;//Host yaratish&lt;/span&gt;

&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;//Dasturni ishga tushirish&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;• Service Lifetimes&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Service Lifetimes&lt;/strong&gt; - DI Containerga ro'yxatga olingan servicening namunasi dastur ishlashi davomida &lt;strong&gt;&lt;code&gt;qancha vaqt yashashi&lt;/code&gt;&lt;/strong&gt; va &lt;strong&gt;&lt;code&gt;qancha nusxada&lt;/code&gt;&lt;/strong&gt; yaratilishiga qarab servicelar &lt;strong&gt;&lt;code&gt;Service Lifetimelarga&lt;/code&gt;&lt;/strong&gt; bo'linadi. &lt;strong&gt;&lt;code&gt;DI Containerga&lt;/code&gt;&lt;/strong&gt; servicelar asosan &lt;strong&gt;&lt;code&gt;Transient&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;Singleton&lt;/code&gt;&lt;/strong&gt; va &lt;strong&gt;&lt;code&gt;Scoped&lt;/code&gt;&lt;/strong&gt; kabi &lt;strong&gt;&lt;code&gt;Lifetimelarda&lt;/code&gt;&lt;/strong&gt; qo'shiladi.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;1. Transient Services&lt;/strong&gt; - bunday turdagi servicelarning namunalari har safar chaqirilganda yangi yaratiladi. Ya'ni &lt;strong&gt;&lt;code&gt;DI Container&lt;/code&gt;&lt;/strong&gt; har safar servicening yangi obyektini yaratadi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Serviceni DI Containerga Transient qilib qo'shish&lt;/span&gt;
&lt;span class="n"&gt;AddTransient&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;TService&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TImplementation&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Extensions.Hosting&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Extensions.DependencyInjection&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HostApplicationBuilder&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Servicelarni DI Containerga qo'shish.&lt;/span&gt;
&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddTransient&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ITransientService&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TransientService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Build&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Servicelarni DI Containerdan olish.&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;transientService1&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetRequiredService&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ITransientService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;transientService2&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetRequiredService&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ITransientService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;transientService3&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetRequiredService&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ITransientService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

&lt;span class="n"&gt;transientService1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;transientService2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;transientService3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;TransientService&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ITransientService&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;currentTime&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"HH:mm:ss:ff"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

   &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; 
    &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;++}&lt;/span&gt;&lt;span class="s"&gt;, vaqt: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;currentTime&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;ITransientService&lt;/span&gt; 
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//Har bir servcice uchun DI Containerda yangi obyekt yaratilyapti!
Output
1, vaqt: 22:49:13:10
1, vaqt: 22:49:13:11
1, vaqt: 22:49:13:12
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Singleton Services&lt;/strong&gt; - ushbu turdagi servicelarning faqat bitta nusxasi bo'ladi va har safar ushbu service namunasiga murojaat qilinganda shu nusxaga murojaat qilinadi. Ya'ni dastur ishlashi davomida faqat bitta obyekt ustida ish bajariladi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Serviceni DI Containerga Singleton qilib qo'shish&lt;/span&gt;
&lt;span class="n"&gt;AddSingleton&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;TService&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TImplementation&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Extensions.Hosting&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Extensions.DependencyInjection&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HostApplicationBuilder&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;//Servicelarni DI Containerga qo'shish.&lt;/span&gt;
&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddSingleton&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ISingletonService&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;SingletonService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Build&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;//Servicelarni DI Containerdan olish.&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;singletonService1&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetRequiredService&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ISingletonService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;singletonService2&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetRequiredService&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ISingletonService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

&lt;span class="n"&gt;singletonService1&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;singletonService2&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SingletonService&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ISingletonService&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;currentTime&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"HH:mm:ss:ff"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; 
      &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;++}&lt;/span&gt;&lt;span class="s"&gt;, vaqt: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;currentTime&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;ISingletonService&lt;/span&gt; 
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//DI Containerda hamma servicelar uchun bitta instance yaratilyapti
Output
1, vaqt: 22:59:21:97
2, vaqt: 22:59:21:97
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Scoped Services&lt;/strong&gt; - &lt;strong&gt;&lt;code&gt;IServiceScopeProvider&lt;/code&gt;&lt;/strong&gt; orqali yaratilgan &lt;strong&gt;&lt;code&gt;scope&lt;/code&gt;&lt;/strong&gt; ichida servicening istalgancha namunalarini yaratsak ham barchasi bitta obyetkga murojaat qilishadi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Serviceni DI Containerga scoped qilib qo'shish&lt;/span&gt;
&lt;span class="n"&gt;AddScoped&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;TService&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TImplementation&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Extensions.Hosting&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Microsoft.Extensions.DependencyInjection&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HostApplicationBuilder&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Servicelarni DI Containerga qo'shish.&lt;/span&gt;
&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddScoped&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IScopedService&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ScopedService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Build&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;//IServiceScopeFactory dan foydalanib scope yaratish.&lt;/span&gt;
 &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;scopeProvider&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetRequiredService&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IServiceScopeFactory&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

 &lt;span class="k"&gt;using&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;scope&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;scopeProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;CreateScope&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;scopedService1&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ServiceProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetRequiredService&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IScopedService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;scopedService2&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ServiceProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetRequiredService&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IScopedService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

    &lt;span class="n"&gt;scopedService1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="n"&gt;scopedService2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ScopedService&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;IScopedService&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;currentTime&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"HH:mm:ss:fff"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

   &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; 
    &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;++}&lt;/span&gt;&lt;span class="s"&gt;, vaqt: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;currentTime&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;IScopedService&lt;/span&gt; 
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Print&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//Scope ichidagi barcha servicelar bitta instancega murojaat qilyapti.
Output
1, vaqt: 00:58:46:926
2, vaqt: 00:58:46:926
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>dotnetcore</category>
      <category>dotnet</category>
      <category>csharp</category>
    </item>
    <item>
      <title>CLI and .NET CLI Commands</title>
      <dc:creator>Feruzbek Raximboyev</dc:creator>
      <pubDate>Thu, 14 Nov 2024 15:24:01 +0000</pubDate>
      <link>https://forem.com/feruzbek_raximboyev_bc9d5/cli-and-net-cli-commands-3234</link>
      <guid>https://forem.com/feruzbek_raximboyev_bc9d5/cli-and-net-cli-commands-3234</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Some CLI Commands&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;For Linux or MacOS&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;1. pwd =&amp;gt; Print Working Directory&lt;/strong&gt; - ushbu buyruq orqali buyruqlar satridagi joriy turgan katalogingizni yoki hozir terminalda qayerda turganingizni bilib lishingiz mumkin. Masalan: &lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pwd 
/home/username/projects
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;2. mkdir =&amp;gt; Make Directory&lt;/strong&gt; - ushbu buyruq orqali joriy turgan katalog ichiga yangi folder yaratish mumkin. Masalan: &lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir MyFirst-CLI-Folder
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;3. rm =&amp;gt; Remove&lt;/strong&gt; - ushbu buyruq fayllarni o'chirish uchun xizmat qiladi. Ammo -r parametrini qo'shgan holda folderlarni ham o'chirish mumkin.&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rm FolderName             // FolderName nomli Folderni o'chiradi
rm FileName.FileExtension // FileName nomli Fileni o'chiradi.
rm *                      // Joriy katalogdagi barcha file va folderlarni o'chiradi.
rm -r FolderName          // Rekursiv tarzda o'chiradi. 
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;4. cd =&amp;gt; Change Directory&lt;/strong&gt; - ushbu buyruq bizga &lt;strong&gt;CUI =&amp;gt; Character User Interface&lt;/strong&gt; orqali ya'ni grafikasiz interfeys orqali kataloglar orasida almashinishga yordam beradi. &lt;strong&gt;cd&lt;/strong&gt; buyrug'idan keyin Path ham berish mumkin.&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd FolderName   //joriy katalogdan FolderName folderiga kiradi.
cd ..           //joriy katalogdan chiqish uchun xizmat qiladi.
cd /source/repos/MyFirstConsoleApp
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;5. ls =&amp;gt; list&lt;/strong&gt; - ushbu buyruq orqali joriy katalog ichidagi file va folderlar ro'yxatini olish mumkin.&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ls // Output FolderA FolderB File.txt Test.docx
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8jfqct1xoov2d3zhg256.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8jfqct1xoov2d3zhg256.png" alt="Output" width="798" height="192"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;6. touch&lt;/strong&gt; - ushbu buyruq Filelarni yaratishga xizmat qiladi.&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch salom.txt             // Bitta salom.txt nomli file yaratib beradi.
touch Hello.txt World.txt   // Bitta va undan ortiq filelar yaratish 
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;For Windows&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;1. mkdir =&amp;gt; Make Directory&lt;/strong&gt; - ushbu buyruq orqali joriy turgan katalog ichiga yangi folder yaratish mumkin. Masalan:&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir MyFirst-CLI-Folder
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;2. dir&lt;/strong&gt; - ushbu buyruq joriy katalogda joylashgan barcha File va Folderlarni ro'yxatini chiqarish uchun xizmal qiladi. Masalan:&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dir 
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgui6dn00y7712yzaxf74.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgui6dn00y7712yzaxf74.png" alt="Output" width="800" height="357"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;3. rm =&amp;gt; Remove&lt;/strong&gt; - ushbu buyruq orqali fayl yoki kataloglarni o'chirish mumkin.&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rm FolderName              // FolderName nomli Folderni o'chiradi
rm FileName.FileExtension  // FileName nomli Fileni o'chiradi.
rm *                       // Joriy katalogdagi barcha file va folderlarni o'chiradi.

&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;4. cd =&amp;gt; Change Directory&lt;/strong&gt; - ushbu buyruq bizga &lt;strong&gt;CUI =&amp;gt; Character User Interface&lt;/strong&gt; orqali ya'ni grafikasiz interfeys orqali kataloglar orasida almashinishga yordam beradi. &lt;strong&gt;cd&lt;/strong&gt; buyrug'idan keyin Path ham berish mumkin.&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd FolderName   //joriy katalogdan FolderName folderiga kiradi.
cd ..           //joriy katalogdan chiqish uchun xizmat qiladi.
cd /source/repos/MyFirstConsoleApp 
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;About the .NET CLI&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;.NET SDK =&amp;gt; Software Development Kit&lt;/strong&gt; ning asosiy komponentalaridan biri hisoblanib, buyruqlar satri ya'ni &lt;strong&gt;CLI =&amp;gt; Command Line Interface&lt;/strong&gt; orqali  &lt;strong&gt;.NET&lt;/strong&gt; ilovalarini &lt;code&gt;ishlab chiqish&lt;/code&gt;, &lt;code&gt;yaratish&lt;/code&gt;, &lt;code&gt;ishga tushirish&lt;/code&gt; va &lt;code&gt;ilovalararo bog'liqliklarni boshqarish&lt;/code&gt;, &lt;code&gt;testlarni ishga tushirish&lt;/code&gt; va shunga o'xshagan bir qancha qulayliklarni taqdim qiluvchi dasturdir.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Solution&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt; - bu bir nechta &lt;strong&gt;Projectlar&lt;/strong&gt; uchun konteyner bo'lib uning ichida bitta yoki undan ortiq Projectlar bo'ladi. Masalan: &lt;code&gt;Mobile App&lt;/code&gt;, &lt;code&gt;Desktop App&lt;/code&gt;, &lt;code&gt;Web App&lt;/code&gt;, &lt;code&gt;Console App&lt;/code&gt;, &lt;code&gt;Class Libary&lt;/code&gt; va boshqalar. Ya'ni Solution Projectlarni birlashtirib turuvchi konteyner bo'lib Projectlar orasidagi qaramliklarni, loyiha konfiguratsiyalarini o'zida saqlaydi.  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;About the .NET Templates&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;.NET Shablonlari&lt;/strong&gt; .NET SDK ning asosiy komponentalaridan biri bo'lib .NET SDK o'rnatilgan paytda standart shablonlar avtomatik tarzda o'rnatiladi. &lt;strong&gt;.NET&lt;/strong&gt; shablonlari dasturchilarga .NET ilovalari va komponentalarini tez va samarali yaratishda yordam beradigan oldindan tayyorlangan loyiha yoki element tuzilmalaridir. .NET ekotizimi o'zining ko'plab shablonlariga ega. Masalan: &lt;code&gt;Class Libary&lt;/code&gt;, &lt;code&gt;Console App&lt;/code&gt;, &lt;code&gt;ASP.NET Core Web API&lt;/code&gt;, &lt;code&gt;Blazor Web App&lt;/code&gt;, &lt;code&gt;.NET MAUI App&lt;/code&gt;, &lt;code&gt;WPF Applications&lt;/code&gt; va boshqalar Shablonlar loyiha turini belgilab beradi.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Some .NET CLI Commands&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Get a list of Templates&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;.NET SDK&lt;/strong&gt; o'rnatilgan tizimda shablonlar ro'yxatini quyidagicha script orqali olish mumkin:&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet new list 
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0mb79e6zi452c89da8t.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0mb79e6zi452c89da8t.jpg" alt=".NET Templates" width="800" height="685"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;.NET CLI orqali loyiha yaratish&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;1. Oddiy Console Project yaratish&lt;/em&gt;&lt;/strong&gt; - ushbu scriptda &lt;code&gt;--name&lt;/code&gt; va &lt;code&gt;--output&lt;/code&gt;lar oddiy parametrlar bo'lib, ularni &lt;code&gt;-n&lt;/code&gt; va &lt;code&gt;-o&lt;/code&gt; kabi qisqartirib yozish mumkin. Agar loyiha nomini bermasangiz loyiha nomi loyiha joylashtirilgan folder nomi bilan bir xil bo'ladi va aksincha loyiha joylashuvi berilmasa loyiha joriy katalog ichiga joylashtiriladi. Agar ikkalasi ham berilmasa Project joriy katalogga joriy katalog nomi bilan yaratiladi. Masalan:&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet new console --name MyFirstConsoleApp --name ProjectName --output {Path or FolderName}
dotnet new console -n ConsoleApp -o {Path or FolderName}
dotnet new console -n ConsoleApp -o C:/Users/User/source/repos/
dotnet new console -n ConsoleApp -o repos
dotnet new console -n ConsoleApp
dotnet new console -o repos
dotnet new console
// --output parametri joylashuvi belgilash uchun ishlatiladi.
// --name paratmetri Projectga nom berish uchun ishlatiladi.
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;&lt;em&gt;2. Bo'sh Solution fayl yaratish&lt;/em&gt;&lt;/strong&gt; - bo'sh Solution fayl yaratish ham tepadagi Console ilova yaratish kommandasi bilan deyarli bir xil. Masalan: &lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet new sln -n MyFirstSolution -o repos
dotnet new sln -o repos
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;&lt;em&gt;3. Projectlarni Solutionga qo'shish&lt;/em&gt;.&lt;/strong&gt; Masalan:&lt;/p&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dotnet sln add ProjectName //Joriy katalogda faqat bitta Solution bo'lsa 
dotnet sln add ProjectName/ProjectName.csproj // 2-usul

dotnet sln SolutionName.sln add ProjectName //Joriy katalogda bittadan ortiq Solution bo'lganida 
dotnet sln SolutionName.sln add ProjectName/ProjectName.csproj // 2-usul
&lt;/code&gt;&lt;/pre&gt;

&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;.NET &lt;code&gt;Build, Run, Test&lt;/code&gt; Commands&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;code&gt;dotnet build&lt;/code&gt;&lt;/strong&gt; - ushbu komanda manba kodini bajariladigan, ishlatish uchun tayyor bo'lgan fayllarga aylantirishga xizmat qiladi va ushbu jarayonga dasturning &lt;em&gt;Build&lt;/em&gt; bo'lish jarayoni deyiladi. Ushbu komanda kiritilganda &lt;strong&gt;.NET SDK&lt;/strong&gt; &lt;strong&gt;MSBuild&lt;/strong&gt;(Microsoft Build Engine)ni chaqiradi. MSBuild bu Build jarayonini boshqarish uchun ishlatiladigan vosita bo'lib, Build jarayonini avtomatlashtirish uchun kerak bo'ladi.&lt;br&gt;
&lt;strong&gt;IL =&amp;gt; Intermediate Languagega&lt;/strong&gt; kompilyatsiya qiladi va bu kodklar platformadan mustaqil tarzda ishlashga mo'ljallangan bo'ladi. Building vaqtida kodning turli qismlari, shu jumladan ichki, tashqi kutubxonalar va boshqa loyiha fayllari, dasturdagi barcha modullar yagona assemblyga birlashtiriliadi. Building jarayoni &lt;strong&gt;Incremental Build&lt;/strong&gt; mexanizmini qo'llab quvvatlaydi. Ya'ni bu shuni anglatadiki, agar loyihadagi fayllarda o'zgarishlar mavjud bo'lsa .NET faqat o'zgartirish kiritilgan yangi fayllarni qayta kompilyatsiya qiladi. Bu esa dasturning Build bo'lish vaqtini tezlashtiradi. O'zgarishlar bor yoki yo'qligini tekshirishda esa &lt;strong&gt;Time Stamp Checking&lt;/strong&gt; texnalogiyasidan foydalanadi. Ya'ni fayllarga o'zgartirish kiritilgan vaqtlarni va Fayl hajmini o'zgargan yoki o'zgarmaganligini tekshiradi. Agar loyiha kodlarida o'zgarish bo'lmasa &lt;code&gt;.exe&lt;/code&gt; va &lt;code&gt;.dll&lt;/code&gt; fayllari yangilanmaydi. Dastur birinchi marta Build qilinganda Project joylashgan papkadagi &lt;code&gt;bin&lt;/code&gt; va &lt;code&gt;obj&lt;/code&gt; papkalariga IL kodlari .&lt;code&gt;exe&lt;/code&gt; va &lt;code&gt;.dll&lt;/code&gt; formatlarida yoziladi. Kodga yangi o'zgartirishlar kiritilishiga qarab bu papka fayllari yangidan yoziladi..NET dasturlarini Terminal orqali build qilish uchun quyidagi buyruqdan foydalaniladi.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Solution doirasida Build qilish.
dotnet build // Agar joriy katalogda bitta Solution bo'lsa.
dotnet build SolutionName.sln // Agar joriy katalogda bittadan ortiq Solution bo'lsa.

//Project doirasida build qilish.
dotnet build ProjectName/ProjectName.csproj
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;2. Run&lt;/em&gt;&lt;/strong&gt; - Build qilingan dasturlarni ishga tushish jarayoniga dasturning Run bo'lish jarayoni deyiladi. CLI orqali .NET dasturlarini ishga tushirish uchun &lt;code&gt;dotnet run&lt;/code&gt; kommandasi ishlatiladi. Ushbu komanda dotnet dasturlarini kerak bo'lgan holatlarda oldin kompilyatsiya qilib keyin dasturni ishga tushiradi. Ushbu komanda orqali dasturga muhit o'zgaruvchilarini ham berib yuborish mumkin.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
