Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

C#/.NET + VisualStudio, namespace problem

I have started learning C#/.NET/VisualStudio (2022) and have this strange problem; all the methods/classes in System and it’s nested namespaces seem to be available without full path or using directives at beginning.

E.g. the following example compiles just fine:

// Program.cs
namespace MyApp
{
    internal class Program
    {
        static void Main()
        {
            Console.WriteLine("Hello World!"); //System.Console
        }

        static HttpClient client = new HttpClient(); //System.Net.Http.HttpClient
    }
}

Why this happens and can I disable this behavior somehow?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

If you are using .NET 6, this is likely from a new feature called "Implicit Usings". Depending on your project type, certain namespaces are automatically included. For example, the default console app template implicity includes the following namespaces:

  • System;
  • System.IO;
  • System.Collections.Generic;
  • System.Linq;
  • System.Net.Http;
  • System.Threading;
  • System.Threading.Tasks;

You can disable this feature by including the following in your project file:

<PropertyGroup>
   <ImplicitUsings>disable</ImplicitUsings>
</PropertyGroup>

There is further documentation on this feature and "Global Usings" in this Microsoft documentation.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading