Narzędzia

Zmiana automatycznie generowanych namespace’ów podczas tworzenia klas w Visual Studio

Programiści .NET nieustannie widzą taki o to zestaw namespace’ów w swoich klasach:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

Lub ewentualnie taki:

using System;
using System.Collections.Generic;
using System.Text;

Są one dodawane automatycznie za każdym razem, gdy jest tworzona klasa C# z poziomu Visual Studio. W zależności od wersji platformy .NET wygenerowany zostanie odpowiedni szablon (nowej klasy) z domyślnie ustalonymi przestrzeniami nazw. Dodawane są te namespace’y, które uważane są za najbardziej popularne. Tylko, że nie są one dodawane przez nas, a narzucane z góry.

A co jeżeli chcielibyśmy to zmienić? Czy można dodać swoje przestrzenie nazw, a może w ogóle się ich pozbyć?

Zmiana szablonu

Aby je zmienić należy zmodyfikować szablon, na podstawie którego zostaje wygenerowana klasa. W zależności od posiadanej przez nas wersji Visual Studio, może znajdować się on w innym katalogu, ale na ogół są one bardzo podobne. Dla Vs 2019 w wersji Community jest to:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

W katalogu znajdują się dwa pliki: Class.cs, w którym można zmienić szablon klasy, oraz metadane XML do szablonu w pliku Class.vstemplate.

Otwieramy plik cs, a w nim znajduje się:

using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ >= 3.5)using System.Linq;
$endif$using System.Text;
$if$ ($targetframeworkversion$ >= 4.5)using System.Threading.Tasks;
$endif$
namespace $rootnamespace$
{
    class $safeitemrootname$
    {
    }
}

Jakiekolwiek modyfikacje, na tym pliku spowodują, że inaczej zostanie wygenerowana nowa klasa. Powiedzmy, że zostawimy tylko namespace, z Linq, bez zdefiniowanej wersji. Plik Class.cs wygląda teraz tak:

using System.Linq;

namespace $rootnamespace$
{
    class $safeitemrootname$
    {
    }
}

Od teraz każda wygenerowana klasa w dowolnym projekcie będzie oparta na powyższym template’cie:

using System.Linq;

namespace ConsoleApp1
{
    class Class2
    {
    }
}

Podsumowanie

Materiał ma charakter ciekawostki. Visual Studio łatwo radzi sobie z podpowiadaniem i przypisywaniem namespace’ów, do odpowiednich elementów. Jednak, żeby to zrobił, bez żadnych dodatkowych wtyczek, należy wpisać dokładną i pełną nazwę np. metody, bądź klasy. Przestrzeni nazw nie powinno być dużo, a najlepiej gdyby były jedynie te używane w danym pliku. Usuwaniem niepotrzebnych namepspace’ów zajmują się inne narzędzia np. Power Toolsy.

Wykorzystywanie template’ów może się przydać w innych sytuacjach, ale o tym napisze w następnych materiałach.

Social media & sharing icons powered by UltimatelySocial