Reputation: 48
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?
Upvotes: 2
Views: 55
Reputation: 5521
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:
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.
Upvotes: 1
Reputation: 21709
You are using implicit global usings. Change the lines in your .csproj
files from
<ImplicitUsings>enable</ImplicitUsings>
to
<ImplicitUsings>disable</ImplicitUsings>
Upvotes: 0