C-sharpcorner Redmond chapter has been organizing a dinner event during the week of Microsoft MVP Summit. This year it was scheduled on March 6th 2018 for all the C-shaprcorner MVPs, invited Microsoft MVPs and few other guests.

67 C# Corner MVPs across the globe registered for this event and many e-mailed me that they will attend.

This year, we had over 125 guests including some estemmed guests linke Scott Hanselmen (doesn’t require an introduction), Mads Torgerson (C# language PM at Microsoft), Kerry Herger (CPM Manager), and Joe Darko (CPM USA).


Moksha Indian Restaurant – Bellevue WA, USA

Moksha Indian Restaurant – Bellevue WA, USA

C# Corner and Microsoft MVPs with Scott Hanselman

Magnus, Mahesh, and Mads Torgerson (C# Language PM, Microsoft)



  • Setup git repository in VSTS
  • Build Continuous Integration (CI)/Continuous Deployment (CD) pipeline from scratch using VSTS
  • Enable CI
  • Create free web app service on Azure
  • Trigger CD after successful CI
  • End-to-end flow execution


Continuous Integration (CI)/Continuous Deployment (CD) are widely used terms in the DevOps world. If you are new or don’t fully understand the buzzword DevOps then read my article DevOps, What, Why & How. Continuous Integration (CI) and Continuous Delivery(CD) enables and empowers any software delivery team in an organization to continuously deliver value to their end users.


The application which you want to setup CI/CD pipeline for, that project code must be available in a code repository in VSTS (Visual Studio Team Services) read my article Beginning with git using VSTS can be helpful to set up a git repo from scratch using VSTS. Also, an Azure portal account is a must.

Creating a Build Definition

After successful Project and code setup in the git, you will see that your VSTS account will show code repository and a project like as shown below. Here, repository named TestProjects has an ASP.NET MVC application named WebApplication1.

Click on “Set up build” and begin with selecting a template “ASP.NET” as shown in the image below, click Apply. You may want to choose a template which is suitable for your application.

Setting the build tasks

If not already open then open the Tasks tab. By default, build definition name will be <ProjectName>-<BuildTemplateName>-CI (you can change this to something else if you wish to) and Agent queue will be empty, which needs to be set to Hosted (in case of .NET) or Hosted 2017 (in case of .NET Core)  as shown under Process blade in image below.

By default, build is being set up at the master branch on the project you initiated “set up build” from, which was TestProjetcs. You can verify this and change settings if needed using the “Get sources” blade as shown in the image below.

Build Template comes pre-configured with most of the tasks and hence you can review other tasks, but no changed would be required for successful execution from this step onwards (verified for MVC application), however, in your case, you may have to tweak some settings.

Queuing a CI build

To produce deployable artifacts, you need to submit a build of your code. To do so, click on Save & queue or if build definition is saved already then click on Queue which will ask for confirmation to kick-off a build as shown in the image below.

Click on Queue to initiate the process and you will notice that your screen will show that a Build #yyyymmdd.n have been queued.

To track the status of a build you can click on the build number link (as shown in the image above) and if everything was setup correctly then you will see “Build succeeded” as shown in the image below that all the build steps executed successfully.  To explore more about each build step, you can click on a step link shown in the left-pane of the window.

Exploring the Build Artifacts

CI build produces deployable artifacts and those can be seen via clicking on “Artifacts” link shown above Build details.

Setting up the Continuous Integration (CI)

Continuous Integration (CI) is when the code is being built on each check-in and that can be deployed to an environment. To set up this process, navigate to the build definition (click on Edit) and open the “Triggers” tab. By default, continuous integration is Disabled as shown in the image below.

Click on “Enable continuous integration” to enable the CI for TestProjetcs and it will include master branch as the default setting.

Click “Save” to keep the changes to the build definition.  Do not choose “Save and queue”

Continuous Integration (CI) in Action

Ensure that VSTS is open and you have Builds page open. Now switch to the Visual Studio and update the code of WebApplication1 under TestProjects repository

Click on “Commit All” to check-in the changes and push the code to master. Soon after that under the Builds in VSTS, you will notice that another build is kicked off and shows “in progress” status which was triggered by the commit “Title update in About.cshtml”.

After successful build process, you will see “succeeded” status

Setting up the Azure Web App

Before creating a Release definition, an environment needs to be set up for deployment. An azure web app is a perfect choice to host the MVC application.

Login to the azure portal and create a web app “WebApplication1-dev” for dev environment and so other flavors (qa, uat, staging, and production etc.) can be created as needed.


By default, the Web app is created as an S1 (small) pricing tier, but you can create your own service plan and select Free pricing tier. Refer to my article Free Web App Hosting on Azure

After successful Web app creation, it will be available at

Setting up the Continuous Delivery (CD)

Continuous Delivery (CD) is a software engineering approach in which teams produce deployable software which can be reliably released to an environment (dev, qa, uat, staging, and production) at any time.

To set up CD click on Build and Releases, then select Releases. Click on “New definition”.

A “New Release Definition” will be created with the template for release as shown in the image below. Change the name of the release to “TestProjects-ASP.NET-CD”, then click on Artifacts and select TestProjects-ASP.NET-CI.  Because, CI build artifacts will be deployed using Release dominion as CD process.

Next, it’s time to setup the Environment, rename it to dev and set values under “Tasks” tab as appropriate.

Creating a Release

After a Release definition has been set up, it’s time to deploy the CI build using the created release, this can be easily achieved by clicking on “Create release” link on the top-right corner.

“Create release” will summarize the setup of showing dev environment and created CI builds to choose from. By default, CI build will automatically kick off the release to the dev environment.

Select the latest build from the list of successful build versions and then click “Create” and notice that “Release-1” has been created.

Click on the link “Release-1” to check the status which will be shown as “IN PROGRESS”

After few seconds Deployment status will be updated to “SUCCEEDED”

Now, if you access the then you will see that web application has been successfully deployed to Azure web app.

Setting up end-to-end automated CI/CD pipeline

In the Release definition click on Artifacts trigger icon (lightning symbol) and enable the continuous deployment trigger and select the branch.

Now, go to Visual Studio and make some changes to the About.cshtml and check-in the code to master branch of WebApplication1 project. Which will then kickoff a CI Build.

Successful CI build will then kick-off the Release for CD to the dev environment.

Upon successful execution of Release, the website will be deployed as shown below (see an updated message on the about.cshtml page).

This point onwards, whenever any code changes will be made using Visual Studio, then a CI build will spin and upon successful build execution, a Release (CD) will be created to deploy the web app.


CI/CD is the most widely used t the rm in industry today and helps in delivering continuous value delivery to the end users. VSTS and Azure offers a lot of great and powerful features to build CI/CD pipeline. This article has shown the process of building CI/CD pipeline from scratch and how to enable various triggers for CI/CD automation during this process.


November 30th, 2017 | Posted by Vidya Vrat in Career Advice - (1 Comments)

“A person once visited a temple under construction where he saw a sculptor making an idol of God…Suddenly he noticed a similar idol lying nearby…Surprised, he asked the sculptor, “Do you need two statues of the same idol?” “No,” said the sculptor without looking up, “We need only one, but the first one got damaged at the last stage…”.

The gentleman examined the idol and found no apparent damage… “Where is the damage?” he asked. “There is a scratch on the nose of the idol.” said the sculptor, still busy with his work…. “Where are you going to install the idol?” The sculptor replied that it would be installed on a pillar twenty feet high… “If the idol is that far who is going to know that there is a scratch on the nose?” the gentleman asked. The sculptor stopped work, looked up at the gentleman, smiled and said, “I will know it…

” The desire to excel is exclusive of the fact whether someone else appreciates it or not…. “Excellence” is a drive from inside, not outside…. Excellence is not for someone else to notice but for your own satisfaction and efficiency. Don’t Climb a Mountain with an Intention that the World Should See You, Climb the Mountain with the Intention to See the World.

I spoke at Silicon Valley Code Camp 2017 in San Jose, CA on Oct 7th 2017 and my topic was Need of DevOps in the Enterprise.

• Need of DevOps in the Enterprise

It was nice experience to speak in Silicon Valley and meet college students to very well experienced professionals. I was really honored to have Ron Lichty attend my session and at the end mentioning that it was a great session.

Microsoft MVP team was also there to sponsor and socialize about all the MVP Speakers at Silicon Valley Code Camp (SVCC) 2017.

Slide of my session can be found at my Github

Overall it was nice experience, I also met some Microsoft Evangelists and fellow C# Corner and Microsoft MVPs.

I want to THANK all my readers in the .NET community. Today I have reached 5 million read count at

My C-Sharpcorner profile –



Seattle Code Camp 2017

I spoke at Seattle Code Camp 2017 on 09/09/2017 and covered two topics.

• AntiPatterns Every Software Development Team Must Know
• DevOps: What, why and how?

Seattle Code Camp started with a Keynote from Microsoft’s Jeremy Foster and he shared a slide with all Microsoft MVP (Most Valuable Professionals) and FTE (Full Time Employee) who were speaking at 09/09/2017 Seattle Code Camp.

Microsoft got separate printed agenda for MVP and FTE Sessions

Session Details

My 1st Session on AntiPattern was in Room#103 at 11 am -12 pm. I had a brief introduction and begin with the presentation. As already set the expectation with the audience, I kept it very interactive and many participated well to share knowledge and experiences with others.

Some of the attendees even spoke to their friends in the lunch break and recommended them to attend my next session. Some of the attendees returned for the 2nd session for DevOps at 1-2pm and some mentioned that it was the best talk they attended. Well, I thank them for their kind words and patience to provide me an opportunity to share my thoughts with them.

What people said after my sessions

Presentation Slides

Slides are available at

Contact Me

Please connect with my via
LinkedIn :
Twiter :

Send me a message using Contact Me tab on the blog.

Speaking at Seattle Code Camp 2017

September 6th, 2017 | Posted by Vidya Vrat in Community - (0 Comments)

Seattle Code Camp 2017 is here 09/09/2017 and I will be speaking  on two hot topics which will benefit software developers who really care about their craft.

• AntiPatterns Every Software Development Team Must Know
• DevOps : What, why and how?

Register at #SeattleCodeCamp

Seattle Code Camp


DevOps is a new buzzword and it promotes continuous value delivery to the end users. To know more about DevOps read my article DevOps: What, why and how? 

DevOps is a “culture”, where development, test, and operations work together in a collaborative manner to automate delivery of quality software.  DevOps culture develops “production-first mindset”. I.e. applying DevOps ensures that your code is always ready to be deployed to production. 

Agile Manifesto 

Agile manifesto and principles have an influence on DevOps. Let’s review agile manifesto: 

Manifesto for agile software development  

“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:  

  • Individuals and interactions over processes and tools 
  • Working software over comprehensive documentation 
  • Customer collaboration over contract negotiation 
  • Responding to change over following a plan 

Agile Principles 

Overall Agile Manifesto has twelve principles and four of those really gels well with DevOps. 

  • Our highest priority is to satisfy the customer through an early and continuous delivery of valuable software. 
  • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. 
  • Business people and developers must work together daily throughout the project. 
  • Working software is the primary measure of progress. 

How Agile principles apply on DevOps  

  • Our highest priority is to satisfy the customer through an early and continuous delivery of valuable software. 

  When a team adapts the DevOps culture then team works   together to deliver a high-quality software to the end users consistently over and over.  

  • Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.DevOps promotes short delivery cycles over long delivery cycles. Short delivery cycles have small amount of change which is far easier to deploy and test and detect impact of changes.
  • Business people and developers must work together daily throughout the project.DevOps enable the business people to have look at the product early and provide candid feedback. DevOps also provides an easy and effective way of adding approval step in the CI/CD pipeline where business / product owner can approve changes for deployment to other environments.
  • Working software is the primary measure of progress.At the end business values working software having reliable feature delivered on time to end users. DevOps practices enable the software development teams to deliver working software on time and provided proper channel for feedback between various stages of the DevOps workflow.

DevOps, What , Why & How

June 7th, 2017 | Posted by Vidya Vrat in ALM / DevOps - (0 Comments)

What DevOps is not?

DevOps is not a “Packaged Solution”. I.e.  You cannot buy and install it.

What is DevOps?

“DevOps is the union of people, process, and products to enable continuous delivery of value to our end users.” – Donovan Brown, MSFT

DevOps is a “culture”, where development, test, and operations work together in a collaborative manner to automate delivery of quality software.  DevOps culture develops “production-first mindset”. I.e. applying DevOps ensures that your code is always ready to be deployed to production.

Why DevOps?

First thing DevOps offers is that, it breaks the “Wall of Confusion” between development and operations team. These two teams have different agenda and expectations when it comes to software delivery and deployment.

DevOps breaks the wall of confusion between teams and fosters better communication and collaboration throughout the application development lifecycle and results into better visibility and small frequent deployments together.

DevOps Benefits and ROI – Source, Forrester Research Inc.

  • Improved IT operations efficiency. Saving 50% of allocated IT operations support.
  • Improved developer productivity with faster, automated release processes. Developers saw a 15% improvement in productivity.
  • Improved tester productivity with faster, automated release processes. 20% productivity gain with their deployment of the Microsoft DevOps solution.
  • Faster recovery from failures and reduction in release risk. Reduce time-to-resolution per incident by 2 hours.
  • Reduced cycle time by as much as 99% and more frequent deployments. Increased customer satisfaction and also gained new business.
  • Faster speed-to-market for new features, products, and services for customers. 20x more, leading to increased sales.
  • Improved release quality. Successful releases with a reduction in errors increase in release reliability, and less time on remediation of release errors.

How to apply DevOps?

Prime objective of DevOps is to “quickly ship the highest quality software to the end customers”. To make this happen DevOps needs to be implemented across all the phases of software development and delivery.

DevOps workflow from planning to release

The workflow model below shows how teams go through four phases and contribute towards DevOps adoption.

Plan Backlog represents well-defined and prioritized user stories with proper acceptance criteria etc.

Develop & Test Development will include good quality code written, debugged, code reviewed, checked-in including unit test coverage as appropriate. Testing will include verifying the user story’s acceptance criteria, possibly followed by performance and integration tests etc.

Release – Whenever a new version is ready and a sprint end, an automated process is used for deployment.

Monitor and Learn After release team can gather information related to how customers use the application /services and continue to monitor health of application.

Collaboration – Building code and running unit tests on each check-in small or big ensures that code is ready to be deployed. Then, deploying it to at-least production like environment and successfully performing tests there ensures that Dev and Production are in collaboration.

DevOps Automation

One major key aspect of DevOps is automation of software build, test, and deploy. DevOps automation enables continuous value delivery.  Let’s see the DevOps Automation process workflow.

Development – This is where a developer writes code in their local development environment.

Version Control – This is version control team uses to check-in code to the repository. E.g. Git, TFS, SVN etc.

Build and Unit Testing – This is where DevOps Continuous Integration (CI) takes place. At this step, code will build with latest checked-in code and latest packages and dependencies as applicable. If there are unit tests then all unit tests will be executed to ensure that there are no collateral damages caused within the code base.

If Build fails then a notification will be sent to the developer who submitted the build. Many teams have various policies and channels set up for this. For example, a bug is created with details when a build fails and team’s slack channel will receive notification when a build fails.

Automated Acceptance Testing – If build succeeds then a set of acceptance tests can be executed automatically to verify that code is working fine.

Any failure in an acceptance test will trigger a feedback initiated to the team and process will again start from beginning.

User Acceptance Test – Passed automated acceptance tests ensures and triggers the code to be promoted to UAT.

Release – Upon passing UAT, code can be released to any environment or production or production like environment. Manual push of code to production is known as Continuous Delivery (CD).

DevOps Toolchain

DevOps is technology agnostic and any development environment on any platform can fully adopt DevOps culture and can continuously deliver quality software to their customers. Here some SDLC phases and tools which will fit in and can help to setup end-to-end DevOps pipeline for your technology and platform of choice.

Planning and Analysis

  • Capturing and tracking (TFS, VSTS, JIRA, ServiceNow.
  • Documentation or Wiki page (Microsoft Teams, SharePoint, Confluence.
  • Collaboration (Slack, HipChat, Microsoft Teams).

Design and Development

  • SCM (TFS, VSTS, Subversion, Git, Mercurial.
  • IDE (Eclipse, IntelliJ, Visual Studio).

Build and Release (CI/CD)

  • Repository management (Artifactory, Nuget, Nexus).
  • Build tools (MSBuild, Jenkins, Bamboo).
  • Configuration management (Chef, Puppet, Ansible).
  • Cloud (AWS, Azure,OpenStack).
  • Containers (Docker).

Integration and Testing

  • Source code verification (SonarQube).
  • Security testing (HP Fortify).
  • Functional testing (MSTest, NUnit, JUnit, Cucumber, Selenium).
  • Performance testing (SOASTA, Apache Test Bench, Microsoft Load and Performance Test).


Many times, developers need to know if a technology or feature is supported by a specific .NET version. For example, how to verify that .NET Core has Linux support or not. Well, you can always Bing that but wouldn’t it be better if this need is supported by “one stop search” and results are authentic.

Accessing .NET API Browser

.NET API Browser can be accessed by

.NET API Browser allows you to search a wide range of features across following:

  • .NET Framework
  • .NET Standard
  • .NET Core
  • Xamarin
  • Azure

Let’s Search in .NET Framework

Open the API Browser and filter it to .NET Framework and choose a version from the middle dropdown. .NET Framework allows to search only for .NET 4.5 – 4.7 I.e. you can’t search features prior to .NET 4.5 in the .NET API Browser.

With the release of .NET 4.6 a new overload was introduced for System.GC.Collect(). When Searched in .NET 4.5 you will see as shown below:

But when switched the Framework Version to 4.6; then new overload can be observed as shown in the image below.

Let’s Search in .NET Standard

.NET Standard is a “specification” of .NET API which are available across all the .NET Runtimes. .NET Standards provides and supports uniformity within entire .NET ecosystem. You can refer to the list of .NET Standard libraries here

As name explains by it-self;  this become evident that all core APIs like System, System.Collections, System.Diagnostics and System.IO etc. are natural candidates for .NET Standard as shown in the image below

Let’s Search in .NET Core

.NET Core is brand new and well accepted framework in Microsoft and non-Microsoft world. To Learn more about .NET read my blog post or C-Sharpcorner Article or watch my Channel9 Video.

A well-known fact about .NET Core is that .NET Core has support for Linux as shown in the image below.


.NET API Browser is a great feature and can become very handy to identify supported features by various platforms as shown some related to .NET in the article above. You may want to use .NET API Browser to search and learn about other APIs related to Xamarin and Azure as well, remember it’s one stop .NET API Browser.