Už dávno neplatí, že NuGet balíčky reprezentují pouze aplikační kód zkompilovaný do DLL a zabelený do balíčku. Druhů NuGet balíčků existuje již celá řada. Kromě těch tradičních máme například balíčky reprezentující analyzery, speciální metabalíčky zastřešující sadu jiných NuGetů a od nedávna také tzv. dotnet tools a čerstvě i dotnet templates.
Díky globálnímu repozitáři nuget.org mají vývojáři volný přístup k více než 200 tisícům NuGet balíčků. Další tisíce NuGet balíčků pak vývojářské týmy sdílí v rámci firemních infrastruktur pomocí Azure DevOps a dalších služeb. V tomto krátkém článku bych rád sepsal pár důležitých postřehů, které by měl každý .NET vývojář znát a zároveň i zásady, kterých se v této oblasti držím.
- class libraries je v současné době vhodné targetovat na NET Standard 2.0 (výjimky ovšem potvrzují pravidlo)
- každou class library vytvořenou s novými csproj lze automaticky buildovat do podoby NuGet balíčku
- související class libraries mi vyhovuje držet v jednom monorepository tak, že projekty mám mezi sebou nalinkované a z nich mi právě vznikají NuGet balíčky… usnadňuje to vývoj a testování
- pokud se opakuje určitá rutina v rámci libovolné aplikace, vytvářím pro ni konzolovku a tu taktéž generuji do podoby NuGet balíčku (tzv. dotnet tool)
- dotnet tools, které jsou použitelné na více projektech instaluji na počítači jako globální dotnet tool
- v případě komplexnějších konzolovek si vždy ručně přidávám podporu pro DI, konfiguraci a logování
- v případě primitivních konzolovek všechno bastlím do metody Main
- konzolovky se snažím stavit vždy nad .NET Core 3.1 - nejen kvůli performance ale i kvůli podpoře diagnostiky na pozadí
- pro opakující se nastavení projektů (například mikroslužby nebo web api) si lze vytvořit projektové šablony a ty opět publikovat jako NuGet balíček
- pro webové aplikace často používám diagnostické nástroje (diagnostics dotnet tools) – memory dumps, memory profiling, performance counters + podpora perfview / speedscope
Jsou-li pro Vás některé termíny neznámé, doporučuji se seznámit s MS dokumentací. Výše uvedené funkce Vám mohou ušetřit velké množství času. Díky tomu, že jsou local a global tools verzované, můžete mít podpůrné utilitky související s konkrétními verzemi aplikací. Navíc se dají tyto utilitky velmi snadno spouštět například na build serverech.
WEBINÁŘ: Vývoj a správa nástrojů v .net core
Pokud Vás téma zaujalo, už 22. září se můžete připojit on-line k webináři, na kterém Vás s problematikou dotnet tools seznámím. Tradiční součástí webináře budou odkazy k dalšímu studiu a praktické dema k okamžitému experimentování a použití.
Registrovat na webinář se můžete zde.