Skip to main content

Process with an ID #### is not running in visual studio community edition 2015

Today I was working on a project and my team member has push the changes to repository first time and I get the latest from git. When I tried to run the project I get an error like “Process with an ID #### is not running”. It’s showing Id number different every time.

If I check the error window It showing me an error like below
“The program ‘[3148] iisexpress.exe’ has exited with code -1073741816 (0xc0000008) ‘An invalid handle was specified’.”

In browser it’s shows me message like “The webpage is not available.”

I have tried different different solutions and check but non of them fixed my issue. After googling I found some different different solution and finally 1 solution worked for me.

So let me show you how to resolve that issues in visual studio.


1. Close all the instances of VS in your PC.
2. Open folder which contains solution file for current project and delete the hidden .vs folder.
3. Again open the Visual Studio.
4. Press F5 and IIS Express should load as normal, allowing you to debug.


Note: As per my experience and viewing some kind of solutions over the net, it looks like by moving project from 1 PC to other PC or other environment or Different version of Visual Studio it causes the problem. So there may be some environment specific information available in the .vs folder.

Explore the Use of System.Environment Class

System.Environment class can not be inherited. It provides valuable information about current platform and environment of the system.
It uses to retrieve environment variable settings, version of the CLR and call stack contents etc.

It has various methods and property to get the useful information about current working environment. Lets have a look on some of most used properties.

Get the Machine Name
– To Get the current system’s machine name we can use MachineName property of Environment class.

For example :
Console.WriteLine(“Machine Name :” + Environment.MachineName);

Get the Current Working Directory
– To Get the current working directory we can use CurrentDirectory property of Environment class.

For example :
Console.WriteLine(“Current Directory :” + Environment.CurrentDirectory);

Get the Current UserName of the system
– To Get the current user name we can use UserName property of the Environment class.

For example :
Console.WriteLine(“User Name :” + Environment.UserName);
Get the current Operating System Version ?
– To Get teh current OS Version we can use OSVersion property of the Environment class.

For example :
Console.WriteLine(“OS Version :” + Environment.OSVersion);

See the below Full C# code.

using System;

namespace SystemEnv
    class Program
        static void Main(string[] args)
            Console.WriteLine("Line 1");
            Console.WriteLine("Line 2");
            Console.WriteLine("Machine Name :" + Environment.MachineName);
            Console.WriteLine("Current Directory :" + Environment.CurrentDirectory);
            Console.WriteLine("OS Version :" + Environment.OSVersion);
            Console.WriteLine("User Name :" + Environment.UserName);

Difference between .Net DLL and Normal DLL file

DLL is stands for Dynamic Link Library. DLL is a file format which holds multiple codes and procedures for windows applications. Generally DLL files are created so that multiple application can use it at the same time. It has common code which may be used by multiple programs so it can reduce the disk space, load faster and consume less memory. DLLs can be converted to static libraries by using MSIL (Microsoft Intermediate Language) diassempler. It is very similar to .EXE file but it can not be execute directly like EXE, but holds same information like code, data and resources.

What is .NET dll file?

When we create a .NET DLL or Assemply in .Net Languages like VB.Net or C#.Net it will create a Managed Assembly. Managed Assembly is the component standard specified by Microsoft .Net. So .Net DLL (assemblies) are only understandable by Microsoft.Net Framework and can be used only in Microsoft.Net managed applications. A managed assemly contains managed code only and it can be executed by .Net Runtime. While when we are creating a C++ DLL then it will generated a win32 com DLL. So if we want to use that DLL in out .Net application the Visual Studio will automatically creates an INTEROP for that to call unmanaged dll from managed code.

We if want to use .NET DLL files into our application then we need to copy the DLL file into BIN folder or add a reference for that DLL file.

What is a Normal DLL file?

Normal DLL file contians code that we can use in our application or program. That code can be written as a separete modules (common functions) so other application or module can use it. Other application is may be .EXE file or .DLL file. It is like a libraries which can holds code, data or resources and can be used by multiple application at the same time. It will help us to modulirse our code, reuse the code, we can do more efficent memoty usage. If we are using common DLL for multiple application then it will consume less disk space and also load faster into memory.

We if want to use Normal DLL files into our application then we need to register it first using the “regsvg32” command or tool.

MIME for DLL files is : application/x-msdownload