<?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>DEV Community: Swapnil Takalkar</title>
    <description>The latest articles on DEV Community by Swapnil Takalkar (@swapnilt).</description>
    <link>https://dev.to/swapnilt</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%2F1150807%2F0c9bc19b-5363-43b7-8ea0-bb2429ba2dca.jpg</url>
      <title>DEV Community: Swapnil Takalkar</title>
      <link>https://dev.to/swapnilt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/swapnilt"/>
    <language>en</language>
    <item>
      <title>What is Azure Blob Storage?</title>
      <dc:creator>Swapnil Takalkar</dc:creator>
      <pubDate>Thu, 09 Nov 2023 19:02:49 +0000</pubDate>
      <link>https://dev.to/swapnilt/what-is-azure-blob-storage-1npc</link>
      <guid>https://dev.to/swapnilt/what-is-azure-blob-storage-1npc</guid>
      <description>&lt;p&gt;Well, let's start from the basics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a blob?&lt;/strong&gt;&lt;br&gt;
A blob is a binary, large object. For example, a pdf document will be stored in binary format. Basically, binary means 0s and 1s. The file is stored as huge amount of binary data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the purpose of Azure Blob Storage?&lt;/strong&gt;&lt;br&gt;
Azure Blob Storage is designed for storing various types of files usually heavy in the size or showing a preview of the document.&lt;br&gt;
User stores pdfs, images or other files and documents. These need to be stored in a common place. Some operations such as view, download, search are performed on these blobs.&lt;/p&gt;

&lt;p&gt;Since files are stored as binary, searching the content that belongs inside the document is faster and easier. Azure Cognitive Search can be used to feed information to indexes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How is the structure of the Blob storage in Azure?&lt;/strong&gt;&lt;br&gt;
In Azure, Blob Storage must have an account. &lt;/p&gt;

&lt;p&gt;There can be many containers under one account. Containers are logical separation of the blobs.&lt;/p&gt;

&lt;p&gt;Single container can contain many files. Usually, common types of blobs are stored inside one container. For example, you can store extension wise files in various containers. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How cost for the storage is decided in Azure Blob storage?&lt;/strong&gt;&lt;br&gt;
Data storage prices are decided as per &lt;em&gt;pay-as-you-go&lt;/em&gt; model.&lt;br&gt;
To understand the exact pricing, we must understand the types of tiers that belong to Azure Blob storage first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Premium tier&lt;/em&gt;&lt;/strong&gt; - Fastest access compared to all tiers as SSD's are used to store the data but costliest option.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Hot tier&lt;/strong&gt;&lt;/em&gt; - Faster to access compared to below tiers but has higher cost than below tiers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Cool tier&lt;/strong&gt;&lt;/em&gt; - Slower than Hot tier but it is cheaper than hot tier.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Cold tier&lt;/strong&gt;&lt;/em&gt; - Data retention period is more compared to the Cool tier and cheaper than the Cool tier.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Archive tier&lt;/strong&gt;&lt;/em&gt; - Need to hydrate the data in advance before accessing it so a slower option but it is cheapest among all.&lt;/p&gt;

&lt;p&gt;Look at the table below: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fypnfkhc8469z3sl88p2a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fypnfkhc8469z3sl88p2a.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[For further understanding please &lt;em&gt;ref:&lt;/em&gt; &lt;a href="https://azure.microsoft.com/en-in/pricing/details/storage/blobs/" rel="noopener noreferrer"&gt;https://azure.microsoft.com/en-in/pricing/details/storage/blobs/&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;We will be looking at &lt;strong&gt;how to setup&lt;/strong&gt; Azure Blob storage account on Azure Portal.&lt;/p&gt;

&lt;p&gt;1) Search "storage account" in search box. Click on "&lt;strong&gt;Storage accounts&lt;/strong&gt;".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fldqolaqcj2g9bhjpnfm7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fldqolaqcj2g9bhjpnfm7.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) Click on &lt;strong&gt;+ Create&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F9iti6rvlvzvy9zn1b640.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F9iti6rvlvzvy9zn1b640.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) Fill the mandatory information as follows and click on &lt;strong&gt;Review&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fql8e6zbax3bkczrad3xj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fql8e6zbax3bkczrad3xj.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) Click on &lt;strong&gt;Create&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fyp1nwnli4ptfeuklzyso.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fyp1nwnli4ptfeuklzyso.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>dotnet</category>
      <category>azure</category>
      <category>blob</category>
    </item>
    <item>
      <title>SQL Server - Types of System Databases and Tables</title>
      <dc:creator>Swapnil Takalkar</dc:creator>
      <pubDate>Thu, 09 Nov 2023 18:15:12 +0000</pubDate>
      <link>https://dev.to/swapnilt/sql-server-types-of-system-databases-and-tables-8kl</link>
      <guid>https://dev.to/swapnilt/sql-server-types-of-system-databases-and-tables-8kl</guid>
      <description>&lt;p&gt;In this post, we will see five types of the &lt;strong&gt;System Databases&lt;/strong&gt; and five types of &lt;strong&gt;User Tables&lt;/strong&gt; that belong to SQL Server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of System Databases:&lt;/strong&gt;&lt;br&gt;
1) &lt;strong&gt;Master database&lt;/strong&gt;&lt;br&gt;
Master database stores information regarding logon and server configuration. It contains information about every database that belongs to SQL Server.&lt;/p&gt;

&lt;p&gt;Master database is the backbone of the SQL Server and SQL Server cannot run without it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fzifld9udlrso9lc40tso.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fzifld9udlrso9lc40tso.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) &lt;strong&gt;Model database&lt;/strong&gt;&lt;br&gt;
Model database is a template for every database that will be newly created. Model database stores the properties which will be copied to a newly created database. If you want certain properties your way other than default, then you should make change in the model database. Once a new database is created, it will be the same copy of the model database.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F0oqpxieav90144mb6jqr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F0oqpxieav90144mb6jqr.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) &lt;strong&gt;MSDB database&lt;/strong&gt;&lt;br&gt;
MSDB contains information that is required to run jobs, scheduler, alerts, database mail, service broker.&lt;/p&gt;

&lt;p&gt;MSDB database also contains backup and restore history.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Frahyxong7tfklejnmm3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Frahyxong7tfklejnmm3v.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) &lt;strong&gt;Resource database&lt;/strong&gt;&lt;br&gt;
The resource database is a hidden database that cannot be modified. It holds information regarding all system objects. All the 'sys' schema objects actually belong to resource database however they appear in every database.&lt;/p&gt;

&lt;p&gt;5) &lt;strong&gt;TempDB database&lt;/strong&gt;&lt;br&gt;
TempDB database holds temporary tables namely local and global temporary tables, table variables. We will see more about temporary tables and table variables below.&lt;br&gt;
&lt;a href="https://media.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%2Fta9cgv2nfqf1ncstgvia.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fta9cgv2nfqf1ncstgvia.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of Tables:&lt;/strong&gt;&lt;br&gt;
1) &lt;strong&gt;System table&lt;/strong&gt;&lt;br&gt;
System tables belong to the System database that SQL Server uses for internal purposes. Usually, configuration or history related information is stored in these tables. Users cannot perform operations on these tables directly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fck7k46fpteid5vuf42zv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fck7k46fpteid5vuf42zv.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) &lt;strong&gt;Regular table&lt;/strong&gt;&lt;br&gt;
Regular tables are also known as User tables since the user creates them under user database for storing information.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE [dbo].[MyTable](
    [EmployeeId] [int] NOT NULL,
    [Name] [varchar](50) NOT NULL,
    [Department] [varchar](50) NOT NULL
) ON [PRIMARY]
GO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.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%2Fpj2z08fpxcrayqi2owsa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fpj2z08fpxcrayqi2owsa.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) &lt;strong&gt;Local temporary table&lt;/strong&gt;&lt;br&gt;
Local temporary tables are stored in TempDB. Local temporary tables are visible to the user who has created those. They are deleted when the user disconnects the database instance. &lt;br&gt;
Usually, local temporary tables are created programmatically in stored procedure and used for storing temporary data. It is good practice to programmatically drop temporary table after its use.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE #MyLocalTempTable
(
EmpName VARCHAR(50),
EmpId INT
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.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%2Ffmwikbm02gbxk4fn0rb4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Ffmwikbm02gbxk4fn0rb4.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) &lt;strong&gt;Global temporary table&lt;/strong&gt;&lt;br&gt;
Global temporary tables are also stored in TempDB. Global temporary tables are visible across all the users regardless of who has created those. &lt;br&gt;
Global temporary tables are also created programmatically for storing temporary data. Notice that it uses ## as compared to single # for Local Temp Table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE ##MyGlobalTempTable
(
EmpName VARCHAR(50),
EmpId INT
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.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%2Fa41pmnpphebg9xwh0xxq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fa41pmnpphebg9xwh0xxq.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5) &lt;strong&gt;Table variable&lt;/strong&gt;&lt;br&gt;
Table variable acts like a declared local variable. Table variables are automatically cleaned up by the SQL Server once the execution of the function or stored procedure is completed. If there are relatively fewer or limited rows in the picture that need to be stored temporarily then the Table variable is a suitable option.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DECLARE @MonthsOfTheYear TABLE([MonthNumber] INT, [MonthName] VARCHAR(20))

INSERT INTO @MonthsOfTheYear
VALUES 
(1, 'January'),
(2, 'February'),
(3, 'March'),
(4, 'April'),
(5, 'May'),
(6, 'June'),
(7, 'July'),    
(8, 'August'),
(9, 'September'),
(10, 'October'),
(11, 'November'),
(12, 'December')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can query table as follows: &lt;br&gt;
&lt;code&gt;SELECT * FROM @MonthsOfTheYear&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F60562m3uptf2reuhbh37.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F60562m3uptf2reuhbh37.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sqlserver</category>
      <category>sql</category>
      <category>database</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Types of the .Net frameworks</title>
      <dc:creator>Swapnil Takalkar</dc:creator>
      <pubDate>Tue, 07 Nov 2023 17:03:59 +0000</pubDate>
      <link>https://dev.to/swapnilt/types-of-the-net-frameworks-2c71</link>
      <guid>https://dev.to/swapnilt/types-of-the-net-frameworks-2c71</guid>
      <description>&lt;p&gt;If you are a beginner in the world, there may be confusion about ".Net", ".Net Core", ".Net Framework", and ".Net Standard". Let's take a look at the three major types of the .Net frameworks. &lt;/p&gt;

&lt;p&gt;1) &lt;strong&gt;.Net Framework&lt;/strong&gt;:&lt;br&gt;
Microsoft released the beta version of .Net framework 1.0 in early 2000. Currently, .Net framework 4.8.1 is the latest version available.&lt;/p&gt;

&lt;p&gt;It strictly runs in Windows environments only. Windows forms, ASP.Net, ASP.Net MVC, and WPF are the most popular features of the .Net framework.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5d8yYaGH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u9tw638vzangt1ijyxxr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5d8yYaGH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u9tw638vzangt1ijyxxr.png" alt="Image description" width="671" height="698"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) &lt;strong&gt;.Net Core&lt;/strong&gt; (.Net)&lt;br&gt;
.Net core was released by Microsoft in June 2016. It is a rewritten version of earlier .Net frameworks however its specialty is that it can run in cross-platform environments such as Windows, Linux, and Mac. It is also an open source project. &lt;/p&gt;

&lt;p&gt;It was called ".Net Core" until version 3.1 however, the 5th version is considered now as ".Net" instead of ".Net Core" the reason being there will not be further development of the original .Net Framework version 4.8.1. &lt;br&gt;
Hence, the original .Net Framework and .Net Core become legacy and further versions will only be known as &lt;strong&gt;.Net&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Microsoft recommends now upgrading these legacy frameworks to the latest .Net version.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PpROpOmY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sfuo1tu8yg1hgq5zvspr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PpROpOmY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sfuo1tu8yg1hgq5zvspr.png" alt="Image description" width="800" height="49"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Refer to this post for guidance related to upgrading the .Net framework:&lt;br&gt;
&lt;a href="https://dev.to/swapnilt/how-to-migrate-you-current-net-framework-to-latest-version-jf9"&gt;https://dev.to/swapnilt/how-to-migrate-you-current-net-framework-to-latest-version-jf9&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;.Net 8.0 is the latest beta version currently available. ASP.Net core, Universal Windows Platform (UWP) are the popular features of it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ygxRvg0p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6ii9pxcpcit30ozgzczf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ygxRvg0p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6ii9pxcpcit30ozgzczf.png" alt="Image description" width="608" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) &lt;strong&gt;.Net Standard&lt;/strong&gt;&lt;br&gt;
.Net standard is a library framework. You can create non executable type library projects. Its speciality is that you can use these projects as packages or libraries with selective versions of .Net framework as well as .Net Core.&lt;br&gt;
When you have both types of projects in production and would like to use common code in projects, you can use .Net Standard to address the issue specifically .Net Standard 2.0.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ldY7-CE3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/10vazbvf842c5ef27w9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ldY7-CE3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/10vazbvf842c5ef27w9g.png" alt="Image description" width="618" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>dotnetcore</category>
      <category>dotnetstandard</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why use Fluent Assertions for .Net and how to setup it?</title>
      <dc:creator>Swapnil Takalkar</dc:creator>
      <pubDate>Tue, 17 Oct 2023 16:17:02 +0000</pubDate>
      <link>https://dev.to/swapnilt/why-use-fluent-assertions-for-net-and-how-to-setup-it-49o3</link>
      <guid>https://dev.to/swapnilt/why-use-fluent-assertions-for-net-and-how-to-setup-it-49o3</guid>
      <description>&lt;p&gt;There are so many unit test frameworks available for .Net such as &lt;strong&gt;NUnit&lt;/strong&gt;, &lt;strong&gt;xUnit&lt;/strong&gt; and &lt;strong&gt;MSTest&lt;/strong&gt;. They all have their own ways to assert the object or sut. &lt;br&gt;
If you are working on multiple projects or you change the project to work on another and if they have different unit test frameworks than you are familiar with, it becomes a problem.&lt;/p&gt;

&lt;p&gt;Fluent Assertions supports most of the popular unit test frameworks and you can assert using its extension methods on the sut or objects. That solves problem of keeping up with other frameworks for assertion. You just need to remember how Fluent Assertion works (and trust me it is easy to remember and use) regardless of the unit test framework you use.&lt;/p&gt;

&lt;p&gt;We will see how to setup it for your .Net project followed by some examples.&lt;/p&gt;

&lt;p&gt;1) Right click on the Test Project and select Manage NuGet Package&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ri5w1OCi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mdjzdeyh0sp42sowalpa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ri5w1OCi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mdjzdeyh0sp42sowalpa.png" alt="Image description" width="800" height="650"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) Search for FluentAssertions in browse section.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U_9Kwu0_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/irk41egzfvm035f6t92z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U_9Kwu0_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/irk41egzfvm035f6t92z.png" alt="Image description" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) Click on it and select install option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f-hX0Y_r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x6m0xgmkc6s1ak2msx8r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f-hX0Y_r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x6m0xgmkc6s1ak2msx8r.png" alt="Image description" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) Click on OK when you see popup like below: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qLTrI5V4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/db8ufoae5w6ruonm3mhz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qLTrI5V4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/db8ufoae5w6ruonm3mhz.png" alt="Image description" width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So that was about how to setup.&lt;br&gt;
Now time for the action.&lt;/p&gt;

&lt;p&gt;Program.cs looks like below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;namespace Calculator
{
    public static class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Enter two numbers for addition please: ");

            int.TryParse(Console.ReadLine(), out int num1);
            int.TryParse(Console.ReadLine(), out int num2);

            var sum = Calculator.Addition(num1, num2);

            Console.WriteLine($"Result of the addition is: {sum}");
        }
    }

    public static class Calculator
    {
        public static int Addition(int number1, int number2)
        {
            return number1 + number2;
        }

        public static int Subtraction(int number1, int number2)
        {
            return number1 - number2;
        }

        public static int Multiplication(int number1, int number2)
        {
            return number1 * number2;
        }

        public static int Division(int number1, int number2)
        {
            return number1 / number2;
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here are some examples of the Unit Tests.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using FluentAssertions;
using NUnit.Framework;

namespace Calculator.Tests
{
    public class Tests
    {
        [SetUp]
        public void Setup()
        {
        }

        [Test]
        public void Addition_Should_Return_Result()
        {
            int number1 = 5;
            int number2 = 10;

            var result = Calculator.Addition(number1, number2);
            result.Should().Be(15);
        }

        [Test]
        public void Division_Should_Return_Result()
        {
            int number1 = 10;
            int number2 = 5;

            var result = Calculator.Division(number1, number2);
            result.Should().Be(2);
        }

        [Test]
        public void Division_Should_Throw_Exception_When_Divided_By_Zero()
        {
            int number1 = 10;
            int number2 = 0;

            Action act = () =&amp;gt; Calculator.Division(number1, number2);
            act.Should().Throw&amp;lt;DivideByZeroException&amp;gt;();
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So the Should() method is an extension method that does the magic. You must use Should() on the sut or object you wish to assert. It further have various extension methods such as .Be(), .BeGreaterThan(), BePositive(), NotBe().  &lt;/p&gt;

&lt;p&gt;To learn more, visit official website: &lt;a href="https://fluentassertions.com/introduction"&gt;https://fluentassertions.com/introduction&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>unittests</category>
      <category>fluentassertions</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to clean old GIT branches from the remote server?</title>
      <dc:creator>Swapnil Takalkar</dc:creator>
      <pubDate>Sun, 15 Oct 2023 16:37:27 +0000</pubDate>
      <link>https://dev.to/swapnilt/how-to-clean-old-git-branches-from-remote-4d4b</link>
      <guid>https://dev.to/swapnilt/how-to-clean-old-git-branches-from-remote-4d4b</guid>
      <description>&lt;p&gt;If you want to make some free space on the server or if you feel annoyed to see too many git branches on remote as you will never be using them in lifetime, then there is a solution for deleting the old git branches.&lt;/p&gt;

&lt;p&gt;If you are using GitLab, GitHub or any other git supported repository for version controlling for your project, this solution should work for you.&lt;/p&gt;

&lt;p&gt;We will be listing branches from oldest commit date to newest.&lt;/p&gt;

&lt;p&gt;The command is as follows:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git for-each-ref --sort=committerdate refs/heads/ --format='%(HEAD) %(color:cyan)%(refname:short) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk72muk99byjlh5qb0tyb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk72muk99byjlh5qb0tyb.png" alt="Image description" width="800" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Command should return the result which consist of Branch name, Last commit id, Description of last commit, Author, Date of the last commit.&lt;/p&gt;

&lt;p&gt;Now you can figure out which branches you would like to delete. Prepare a list of branches you would like to delete.&lt;/p&gt;

&lt;p&gt;In our case, we will delete Test_1 and Test_2.&lt;br&gt;
Basically, you can delete as many branches as you want. There are two ways as follows:&lt;/p&gt;

&lt;p&gt;1) &lt;code&gt;git push origin -d branch-name1 branch-name2&lt;/code&gt;&lt;br&gt;
2) &lt;code&gt;git push origin -d branch-name1 &lt;br&gt;
    git push origin -d branch-name2&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Either you need to pass multiple branch names to the command, or you need to prepare a list of command followed by single branch name and paste entire list in command prompt or powershell at once.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
1) &lt;code&gt;git push origin -d Test_1 Test_2&lt;/code&gt;&lt;br&gt;
2) &lt;code&gt;git push origin -d Test_1 &lt;br&gt;
    git push origin -d Test_2&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We will be using the first option here. It will delete both Test_1 and Test_2 branches at once.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7bn3hpvzdskqkvost98o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7bn3hpvzdskqkvost98o.png" alt="Image description" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GIT has deleted both branches. Now let's verify that using the command earlier we used to list branches by oldest commit date first order.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4838wstnkxw2e0jdzgmh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4838wstnkxw2e0jdzgmh.png" alt="Image description" width="800" height="75"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's also check on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0efq6s7u3g5vsnos3bd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0efq6s7u3g5vsnos3bd.png" alt="Image description" width="800" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can see that both Test_1 and Test_2 branches have been deleted.&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
    </item>
    <item>
      <title>How to upgrade your current .Net framework to latest version?</title>
      <dc:creator>Swapnil Takalkar</dc:creator>
      <pubDate>Wed, 11 Oct 2023 15:35:58 +0000</pubDate>
      <link>https://dev.to/swapnilt/how-to-migrate-you-current-net-framework-to-latest-version-jf9</link>
      <guid>https://dev.to/swapnilt/how-to-migrate-you-current-net-framework-to-latest-version-jf9</guid>
      <description>&lt;p&gt;If you want to upgrade your .Net core framework from 3.1/6/7 to latest .Net framework 6/7/8 then there are two ways to upgrade .Net framework. One way is &lt;strong&gt;manual&lt;/strong&gt; and the other way is &lt;strong&gt;automatic&lt;/strong&gt; by using Upgrade Assistant.&lt;/p&gt;

&lt;p&gt;So, &lt;strong&gt;manual&lt;/strong&gt; fix is that double click on the project to open .csproj file and then change the  to version you wish to upgrade to.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fwqgwyvybwb8fgdv749br.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fwqgwyvybwb8fgdv749br.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do so for each project and rebuild the entire solution. If build is successful, then you are almost done. Make sure that dotnet clean, dotnet build, dotnet test, dotnet pack and dotnet publish is working as expected. If some project fails due to package incompatibility, make sure you upgrade packages as well to compatible version.&lt;/p&gt;

&lt;p&gt;You may also need to change your build pipeline to relevant MSBuild version and make sure that correct .Net runtime version is installed in all the environments of the project.&lt;/p&gt;

&lt;p&gt;However, Microsoft has developed &lt;strong&gt;.NET Upgrade Assistant&lt;/strong&gt;. Using it to upgrade .Net framework is recommended as it will check each file along with compatibility of packages developed by Microsoft. We have to use Upgrade Assistant project by project to upgrade &lt;strong&gt;automatically&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Let’s see how to do it step by step.&lt;/p&gt;

&lt;p&gt;1) Download &lt;strong&gt;.NET Upgrade Assistant&lt;/strong&gt; in Visual Studio. Extensions -&amp;gt; Manage Extensions&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fzfvvz81ewumeiprchode.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fzfvvz81ewumeiprchode.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) Search .NET Upgrade Assistant and click on download&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fq1uc8vmvemqtw6x9n1wr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fq1uc8vmvemqtw6x9n1wr.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) You will see the message 'Your changes will be scheduled...' at the bottom. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fx1yiia2g5gm2pvkfs8vv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fx1yiia2g5gm2pvkfs8vv.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) Close Visual Studio. VSIX installer will start installing extension, as soon as you close Visual Studio.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fgfil69hmq9wzo7vsweja.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fgfil69hmq9wzo7vsweja.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fgrpjfa0ecipxndebesxi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fgrpjfa0ecipxndebesxi.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F5yhy50qaaydu30rk8pum.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F5yhy50qaaydu30rk8pum.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5) Now open Visual Studio again.&lt;/p&gt;

&lt;p&gt;6) In Solution Explorer, right click on your first project. Select Upgrade option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F9eiaspvi7sc07p0lsxt8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F9eiaspvi7sc07p0lsxt8.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7) Upgrade Assistant will open. Click on In-place project upgrade.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F1pzz5hkpxlqh7t3igo8u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F1pzz5hkpxlqh7t3igo8u.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8) Select .Net framework you would like to migrate to and click Next.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fchtbi8nr2zlnsuer7ca1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fchtbi8nr2zlnsuer7ca1.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;9) If selected SDK is not present on your machine then you may see following window. You can click on the link given in the message which will take you to download page. Download and install relevant version of the SDK. After that, you may need to restart Visual Studio and open Upgrade Assistant again.&lt;/p&gt;

&lt;p&gt;If you already have SDK on your machine go to next step.&lt;/p&gt;

&lt;p&gt;10) You should see the screen like below. Click on Upgrade selection.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Firyxehd3rkeufm44jhgm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Firyxehd3rkeufm44jhgm.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;11) Upgradation will be started. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fa5chmhdyq4fhe6g1ljtj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fa5chmhdyq4fhe6g1ljtj.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fpf5ejro6ls0ed2sztiem.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fpf5ejro6ls0ed2sztiem.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;12) Upon completion you should see screen as of below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fr4cclawlox1lkv8uv7d8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fr4cclawlox1lkv8uv7d8.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;13) Do the same process for each projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fx71xr5fiuef37qchq46b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fx71xr5fiuef37qchq46b.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you are done with each project, rebuild entire solution. Do not forget to test solution using following commands: dotnet clean, dotnet build, dotnet test, dotnet pack and dotnet publish. &lt;/p&gt;

&lt;p&gt;You can modify the build pipeline to build solution using relevant MSBuild version and install correct .Net runtime version in all the environments of the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;br&gt;
Efficient way to upgrade .Net framework is using &lt;strong&gt;.NET Upgrade Assistant&lt;/strong&gt;. It is easiest way and it takes care of dependencies such as Microsoft packages.&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>dotnetcore</category>
      <category>dotnetframework</category>
    </item>
    <item>
      <title>Quickest way to dump data to the database using .Net</title>
      <dc:creator>Swapnil Takalkar</dc:creator>
      <pubDate>Sun, 08 Oct 2023 13:32:10 +0000</pubDate>
      <link>https://dev.to/swapnilt/quickest-way-to-dump-data-to-the-database-using-net-2b33</link>
      <guid>https://dev.to/swapnilt/quickest-way-to-dump-data-to-the-database-using-net-2b33</guid>
      <description>&lt;p&gt;If you come across a situation where you may need to insert large data quickly to the database, then the easiest &amp;amp; quickest way is &lt;strong&gt;SqlBulkCopy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You need to take the data into &lt;strong&gt;ADO.Net table&lt;/strong&gt; from the source, mention destination table and pass the data table to the SqlBulkCopy method. And of course, you can then run stored procedure to process data further. No need to create and maintain SSIS package for dumping the data.&lt;/p&gt;

&lt;p&gt;We will take the example of CSV file as source to dump its data into database. We will dump more than ten thousand of the records in the database in less than a second. See the two screenshots below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NIWLKvbm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3fcblv91iam1rvnp40q6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NIWLKvbm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3fcblv91iam1rvnp40q6.png" alt="Image description" width="359" height="795"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Qy2WieX9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jga3zttkus5j5c5yfdzd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Qy2WieX9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jga3zttkus5j5c5yfdzd.png" alt="Image description" width="359" height="797"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Around millions of records are also matter of a second. Data table can have maximum 16,777,216 rows in it hence no need to worry about large data sources.&lt;/p&gt;

&lt;p&gt;The table in the database is empty and looks like below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8i38_rIT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l2l4mzzzb2rwcc69gu7p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8i38_rIT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l2l4mzzzb2rwcc69gu7p.png" alt="Image description" width="400" height="866"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now here is the piece of code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;

var timer = new Stopwatch();
timer.Start();

Console.WriteLine("Operation started: " + timer.Elapsed.ToString());

var dataTable = new DataTable();

Console.WriteLine("Reading CSV: " + timer.Elapsed.ToString());

using (StreamReader sr = new StreamReader("C:\\Users\\Swapnil\\Desktop\\MyRecords.csv"))
{
    var headers = sr.ReadLine().Split(',');
    foreach (var header in headers)
    {
        dataTable.Columns.Add(header);
    }

    while (!sr.EndOfStream)
    {
        var rows = sr.ReadLine().Split(',');
        var dataRow = dataTable.NewRow();

        for (int i = 0; i &amp;lt; headers.Length; i++)
        {
            dataRow[i] = rows[i];
        }
        dataTable.Rows.Add(dataRow);
    }
}

Console.WriteLine("CSV data is now in data table: " + timer.Elapsed.ToString());
Console.WriteLine("Dumping data table to database's table: " + timer.Elapsed.ToString());

var connectionString = "Data Source=swapnil-pc;Initial Catalog=example;Integrated Security=True";

using (var connection = new SqlConnection(connectionString))
{
    connection.Open();

    using (var sqlBulkCopy = new SqlBulkCopy(connection))
    {
        sqlBulkCopy.DestinationTableName = "dbo.MyTable";
        sqlBulkCopy.WriteToServer(dataTable);
    }

}

Console.WriteLine("Operation ended: " + timer.Elapsed.ToString());
Console.ReadLine();

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

&lt;/div&gt;



&lt;p&gt;You can also map column to column using &lt;strong&gt;ColumnMappings&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Below is the timestamp of each phase during the operation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t562TT-Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bgknw48qahcvj9ory1v7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t562TT-Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bgknw48qahcvj9ory1v7.png" alt="Image description" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now database table looks like below:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rQw5qhrS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bhvgemz4nflzwee82mex.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rQw5qhrS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bhvgemz4nflzwee82mex.png" alt="Image description" width="337" height="879"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;br&gt;
SqlBulkCopy is hasle free &amp;amp; quick way to dump data from ADO.Net's data table to database table. You may need to bring data from sources such as CSV, Excel to data table first. You can further perform operations by calling stored procedure once data is dumped.&lt;/p&gt;

</description>
      <category>sqlserver</category>
      <category>sql</category>
      <category>dotnet</category>
      <category>dotnetcore</category>
    </item>
    <item>
      <title>How to retain form data using JavaScript when model is not directly bind to html controls in ASP.Net Core</title>
      <dc:creator>Swapnil Takalkar</dc:creator>
      <pubDate>Mon, 02 Oct 2023 08:03:27 +0000</pubDate>
      <link>https://dev.to/swapnilt/how-to-retain-form-data-using-javascript-when-model-is-not-directly-bind-to-html-controls-in-aspnet-core-5h5e</link>
      <guid>https://dev.to/swapnilt/how-to-retain-form-data-using-javascript-when-model-is-not-directly-bind-to-html-controls-in-aspnet-core-5h5e</guid>
      <description>&lt;p&gt;There may be a situation when you have not directly bind the html controls to model in the asp.net core but you may need to retain the user data which user has filled in the form. Probably for the validation purpose at the backend and then redirect user to the same page. &lt;/p&gt;

&lt;p&gt;There is solution for that.&lt;/p&gt;

&lt;p&gt;Look at the code below from the &lt;strong&gt;Index.cshtml&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@model MyProject.Models.UserModel

&amp;lt;form method="post" enctype="multipart/form-data" asp-controller="Home" asp-action="GenerateOTP"&amp;gt;

   &amp;lt;div class="col-sm-6 form-group mb-2 mb-sm-2"&amp;gt;
     &amp;lt;label for="fullname"&amp;gt;Full Name&amp;lt;span class="req"&amp;gt;*&amp;lt;/span&amp;gt; 
     &amp;lt;/label&amp;gt;
     &amp;lt;input type="text" class="form-control" name="FullName" 
      id="fullname" placeholder="Enter your full name." required&amp;gt;
   &amp;lt;/div&amp;gt;

   &amp;lt;div class="col-sm-6 form-group mb-2 mb-sm-2"&amp;gt;
     &amp;lt;label for="dob"&amp;gt;Date of Birth&amp;lt;span class="req"&amp;gt;*&amp;lt;/span&amp;gt;
     &amp;lt;/label&amp;gt;
     &amp;lt;input type="Date" name="DOB" class="form-control" id="dob" 
     placeholder="" required&amp;gt;
   &amp;lt;/div&amp;gt;

   &amp;lt;div&amp;gt;
     &amp;lt;input type="checkbox" id="terms" name="Terms" value="1" 
     required&amp;gt;
     &amp;lt;label for="terms"&amp;gt;I accept all terms &amp;amp; conditions.
          &amp;lt;span class="req"&amp;gt;*&amp;lt;/span&amp;gt;
     &amp;lt;/label&amp;gt;
   &amp;lt;/div&amp;gt;
&amp;lt;/form&amp;gt;

@if (ViewBag.ErrorMessage != null)
{
  &amp;lt;script type="text/javascript"&amp;gt;
        document.getElementById('fullname').value = 
        "@Model.FullName"
        document.getElementById('dob').value = 
        "@Model.DOB.ToString("yyyy-MM-dd")"
        document.getElementById('terms').checked = true
  &amp;lt;/script&amp;gt;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Above HTML controls are not bind to any model directly, hence validation takes place at the backend service and then in case of validation, user will be redirected to the same page. &lt;/p&gt;

&lt;p&gt;Below is the code of HomeController.cs&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public IActionResult GenerateOtp([FromForm] UserModel userModel)
{
   var status = dbConnector.CheckCardStatus(userModel.Card, 
                _logger);
   if (status.Equals(CardEnum.Valid))
   {
     HttpContext.Session.SetObjectInSession("userData", userModel);    
   }
   else if (status.Equals(CardEnum.NotActivated))
   {
     userModel.ErrorMessage = "This card is not activated!";
     return RedirectToAction("Index", userModel);
   }
   else
   {
     userModel.ErrorMessage = "Invalid card number.";
     return RedirectToAction("Index", userModel);
    }
   return View();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Flow is as follows:&lt;/strong&gt;&lt;br&gt;
1) User enters the information in HTML controls which is not directly bound to models but data will be stored in the model.|&lt;br&gt;
2) Upon clicking the submit button, model will be submitted to Home Controller.&lt;br&gt;
3) Since action is GenerateOTP, GenerateOTP method will be called.&lt;br&gt;
4) If data is valid then it is stored in session object. If not, model will be redirected to Index.cshtml along with error message.&lt;br&gt;
5) Information present in the model will be inserted in respective HTML controls.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;: If HTML controls are used instead of ASP controls for some reason, you can still retain the user data and refill the information by directing to same page and display error to the user.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>dotnetcore</category>
      <category>dotnet</category>
      <category>html</category>
    </item>
    <item>
      <title>Want an alert when your website or web application goes down? Here is how you can do it through Azure Availability.</title>
      <dc:creator>Swapnil Takalkar</dc:creator>
      <pubDate>Sun, 03 Sep 2023 06:36:23 +0000</pubDate>
      <link>https://dev.to/swapnilt/want-an-alert-when-your-website-or-web-application-goes-down-here-is-how-you-can-do-it-through-azure-availability-41ol</link>
      <guid>https://dev.to/swapnilt/want-an-alert-when-your-website-or-web-application-goes-down-here-is-how-you-can-do-it-through-azure-availability-41ol</guid>
      <description>&lt;p&gt;When your web application on the production goes down or the website that you have created crashes, you may want an alert. Otherwise, it may go unnoticed until someone complains or you may have to check it every day manually, right?&lt;/p&gt;

&lt;p&gt;However, there is a solution. Azure provides a functionality where you can receive email, phone call, sms or even a push notification when your web application goes down.&lt;/p&gt;

&lt;p&gt;The website you have need not to be hosted on azure. You can also configure web apps which are internal websites ie behind the firewall.&lt;/p&gt;

&lt;p&gt;This service is a paid service but with nominal cost.&lt;/p&gt;

&lt;p&gt;We will see how you can configure Availability Tests &amp;amp; Alerts step by step.&lt;/p&gt;

&lt;p&gt;1) Go to Azure Portal. Open &lt;strong&gt;Application Insights&lt;/strong&gt;. You can search for this service in the search bar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NmmeVECv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e7qp06ogtprg9hjm6ocb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NmmeVECv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e7qp06ogtprg9hjm6ocb.png" alt="Image description" width="800" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) Click on &lt;strong&gt;+ Create&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_vWl7gRO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7jb8sziggejmpjz2jfyj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_vWl7gRO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7jb8sziggejmpjz2jfyj.png" alt="Image description" width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) Fill in the required information and click on &lt;strong&gt;Review + create&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1LKVhvFr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wj1xnpz8ott622nkxwsn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1LKVhvFr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wj1xnpz8ott622nkxwsn.png" alt="Image description" width="800" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) After the deployment is completed. Click on &lt;strong&gt;Go to resource.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---XAlwQhL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k59j1b14koxy2lafyhqx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---XAlwQhL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k59j1b14koxy2lafyhqx.png" alt="Image description" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5) Look for &lt;strong&gt;Availability&lt;/strong&gt; option under Investigate section in the left side menu.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TEB8pH4x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uvc7zov2x4rf841si37z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TEB8pH4x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uvc7zov2x4rf841si37z.png" alt="Image description" width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6) You can now see the below screen. We will be creating a &lt;strong&gt;Classic Test&lt;/strong&gt; here. However, you can also create &lt;strong&gt;Standard Test&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The difference between Classic and Standard is that in Standard Test you can also check SSL certificate validity. You can HTTP verb of your choice from the list and add custom header. You can check specific content from the response. In short, Standard is an advanced version of the Classic Test.&lt;/p&gt;

&lt;p&gt;We will be going through Classic Test here. Click on &lt;strong&gt;+ Add Classic test&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BflMSoJs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5w4sfmp8xfgl9ov92b4i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BflMSoJs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5w4sfmp8xfgl9ov92b4i.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7) Fill in the information such as Test name, URL, whether you want retries or not, Test locations from where the website will be pinged such as West Europe, Southeast Asia and many others from the list. Multiple locations are recommended. Click on &lt;strong&gt;Create&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EnH5TUnk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xizya86ecy5z60cj0hv8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EnH5TUnk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xizya86ecy5z60cj0hv8.png" alt="Image description" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o_DQEO_w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ucsohvwdwfadv66g7t3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o_DQEO_w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ucsohvwdwfadv66g7t3v.png" alt="Image description" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;8) It is time now to configure the alert. Click on the 3 dots icon ie context menu. Select &lt;strong&gt;Open Rules (Alerts) page&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G-gM3qJ6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i3j8uq4mszjjirs1z46z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G-gM3qJ6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i3j8uq4mszjjirs1z46z.png" alt="Image description" width="800" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J_DE2KI2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0kslz84elsfi87mkqtrv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J_DE2KI2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0kslz84elsfi87mkqtrv.png" alt="Image description" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;9) Click on the link that belongs to name column.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jH-iEjVt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tjlz49h6836uzcyx2obw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jH-iEjVt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tjlz49h6836uzcyx2obw.png" alt="Image description" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;10) Click on &lt;strong&gt;Edit&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ItH3vzbg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ynm40dkxoz371lmzzrag.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ItH3vzbg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ynm40dkxoz371lmzzrag.png" alt="Image description" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;11) Scroll down to &lt;strong&gt;Action&lt;/strong&gt; section. Click on &lt;strong&gt;Select action groups&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3TKXFkRv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9mzs39lr78qqw5zvei8l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3TKXFkRv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9mzs39lr78qqw5zvei8l.png" alt="Image description" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;12) Click on &lt;strong&gt;+ Create action group&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZUy5Ffxy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dq5djsz7qzrwyfc8s5le.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZUy5Ffxy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dq5djsz7qzrwyfc8s5le.png" alt="Image description" width="800" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;13) Fill in the required information and click on &lt;strong&gt;Review + create&lt;/strong&gt;. Click on &lt;strong&gt;Create&lt;/strong&gt; again on next page.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3nFvBZG9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nur9ye5o8kr2tsbiz9eu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3nFvBZG9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nur9ye5o8kr2tsbiz9eu.png" alt="Image description" width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;14) After creating successfully, scroll down and click on the link which belongs to &lt;strong&gt;Actions&lt;/strong&gt; section - &lt;strong&gt;Action group name&lt;/strong&gt; column.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o53EYwOE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9e9wi75vlor86maplhcq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o53EYwOE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9e9wi75vlor86maplhcq.png" alt="Image description" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;15) You can choose &lt;strong&gt;Notification type&lt;/strong&gt; for Email/SMS/Push/Voice call and you can also choose &lt;strong&gt;Action type&lt;/strong&gt; for the event such as webhook.&lt;/p&gt;

&lt;p&gt;We will be configuring only for the email. Select &lt;strong&gt;Notification type&lt;/strong&gt; as Email in &lt;strong&gt;Notifications&lt;/strong&gt; section and a &lt;strong&gt;Name&lt;/strong&gt; for it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i2Gy3WxI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ba7wb2owhkrollfhrdcx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i2Gy3WxI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ba7wb2owhkrollfhrdcx.png" alt="Image description" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;16) Check Email checkbox and put your email address. Click on &lt;strong&gt;OK&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3DFP2-xU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/haay08mta8gxnx4mzm7q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3DFP2-xU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/haay08mta8gxnx4mzm7q.png" alt="Image description" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;17) Click on &lt;strong&gt;Save Changes&lt;/strong&gt; button and that's all!&lt;/p&gt;

&lt;p&gt;18) If you go to &lt;strong&gt;Availability&lt;/strong&gt; service, it should show you the results of the tests as below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Nr-jLCwS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zsrsblbe8ca90jqekbie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Nr-jLCwS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zsrsblbe8ca90jqekbie.png" alt="Image description" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You should receive an email in case if website/web app goes down.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can setup same for web apps or websites which are in the internal network with some extra steps.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>availability</category>
      <category>website</category>
    </item>
    <item>
      <title>How to build solution, run tests, create package using .Net commands.</title>
      <dc:creator>Swapnil Takalkar</dc:creator>
      <pubDate>Thu, 31 Aug 2023 14:54:35 +0000</pubDate>
      <link>https://dev.to/swapnilt/how-to-build-solution-run-tests-create-package-using-net-commands-12g3</link>
      <guid>https://dev.to/swapnilt/how-to-build-solution-run-tests-create-package-using-net-commands-12g3</guid>
      <description>&lt;p&gt;Ever wondered that how build is executed in the build pipeline? Or maybe how tests are run in the build pipeline? &lt;/p&gt;

&lt;p&gt;Well, DevOps certainly knows that. But .Net developers usually build the solution from visual studio using the menu. &lt;/p&gt;

&lt;p&gt;Sometimes there will be too many errors or a glitch but commands can help you to know exact errors and eliminate the glitch if any.&lt;br&gt;
Also these commands will be useful to build a pipeline.&lt;/p&gt;

&lt;p&gt;Let’s get into the topic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pre requisite:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;.Net framework (.Net core or above recommended)&lt;/li&gt;
&lt;li&gt;Powershell or Developers Command Prompt for VS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open the powershell/Developers Command Prompt and go to the directory where solution is located.&lt;/p&gt;

&lt;p&gt;1) &lt;strong&gt;dotnet clean&lt;/strong&gt; - Cleans the solution by removing obj, bin folders where build related files are being stored.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IATZmSOR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vysegjxu779uv5thyuhg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IATZmSOR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vysegjxu779uv5thyuhg.png" alt="Image description" width="800" height="639"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2) &lt;strong&gt;dotnet restore&lt;/strong&gt; - Restore all the dependencies such as NuGet packages from the repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7Y6oq7Ab--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/34bc9sfkhtpa5nt3enbp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Y6oq7Ab--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/34bc9sfkhtpa5nt3enbp.png" alt="Image description" width="375" height="67"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) &lt;strong&gt;dotnet build&lt;/strong&gt; - Build the solution, which will be ready to run.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jj_utIRf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ixjlrdw778w3lnt14pu2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jj_utIRf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ixjlrdw778w3lnt14pu2.png" alt="Image description" width="763" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4) &lt;strong&gt;dotnet test&lt;/strong&gt; - Runs the tests from all of the test projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZBJtTCbc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wspk5ajjg9mqc9e1mmgc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZBJtTCbc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wspk5ajjg9mqc9e1mmgc.png" alt="Image description" width="800" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5) &lt;strong&gt;dotnet pack&lt;/strong&gt; - Packs the solution so that it can be uploaded as an artifact.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V-LqjqSW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/op6rfrkcb0xtw71w6b16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V-LqjqSW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/op6rfrkcb0xtw71w6b16.png" alt="Image description" width="800" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6) &lt;strong&gt;dotnet publish&lt;/strong&gt; - Publish the solution. Creates required files that needs to run the application in the publish folder.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bBaSGqe_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7szw7w4a3czatgudqol5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bBaSGqe_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7szw7w4a3czatgudqol5.png" alt="Image description" width="800" height="135"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>devops</category>
      <category>unittest</category>
      <category>pipeline</category>
    </item>
  </channel>
</rss>
