Reputation: 1287
C#10 in .NET 6.0 supports a new feature called global using directive.
It seems to do 2 things:
using ...
for that namespace at the top of your *.cs files.I know I can disable the implicit adding of namespaces to the global usings by adding the following to my project file:
<PropertyGroup>
<ImplicitUsings>disable</ImplicitUsings>
</PropertyGroup>
My question:
The global-usings file states // <auto-generated/>
at the top so I cannot just add/remove/edit global-usings in this file.
Upvotes: 12
Views: 11174
Reputation: 142303
Is this global using directive feature just for convenience so that some often used namespaces are included globally, so these usings don't clutter the top of your *.cs files?
Yes, they are just for convenience when working with namespaces (reduce clutter, create global aliases, easier namespace management overall)
Is it possible to add my own global usings?
Yes, you can add global usings to the project either by adding global using Some.Namespace;
to the top of one of the files (you can create a separate one specially for that) or by adding the following to the .cproj:
<ItemGroup>
<Using Include="Some.Namespace"/>
</ItemGroup>
Is it possible to remove some implicitly included global usings (e.g. in case of name clashes)?
Yes, you can remove automatically imported namespaces (from the project default imports with ImplicitUsings
) with
<ItemGroup>
<Using Remove="Some.Namespace"/>
</ItemGroup>
Does this this global using directive feature has other uses I did not think off?
No AFAIK, except for mentioned earlier.
Useful links:
Using
MSBuild propglobal
modifier language referenceUpvotes: 17
Reputation: 2080
using namespace_name
declare global using namespace_name
that's it! This declaration can be anywhere in the project. Ideally, create an import.cs
file and declare all your globally used namespaces there.global using nameclashing_namespace
and remove the global word.Upvotes: 1