S Resharperem je v Controllerech pohodlná navigace přes Ctrl+Click, aby se člověk dostal na View.
V čistém VS2017 se dá z Controlleru používat:
- Ctrl+M, Ctrl+G = Go To View
- Ctrl+M, Ctrl+V = Add View
S Resharperem je v Controllerech pohodlná navigace přes Ctrl+Click, aby se člověk dostal na View.
V čistém VS2017 se dá z Controlleru používat:
Další podstatnou věcí, kterou R# přináší, je mnoho drobných refactoringů. Osobně jsem v tomto příznivcem Roslynu (Compiler Services), takže jsem už při předchozích #NoResharper pokusech nějaké poznatky nabral:
Jestli mi budou nějaké refactoringy chybět, pokusím se najít další/jiné náhrady, popř. je zařadím na seznam „Co jsem musel obětovat“ a uvidíme, co na něm nakonec zbude.
Jako téměř s každou novou verzí Visual Studia, nechávám se pravidelně unést představou, že by to šlo bez Resharperu, střelím se do nohy, vypnu Resharper a zkouším to bez něj (s pomocí samotného VS a minimalistickými extensions).
Dnes jsem se tedy opět vydal na tento pokus a budu vás v jednotlivých postech seznamovat s tipy, jak funkce R# nahradit. Jestli to nakonec celé uzavřu zapnutím R#, nebo vydržím bez něj, to jsem sám zvědav (naposledy jsem opustil R# s upgradem z VS2003 na VS2005 a vydržel jsem to bez R# až do VS2012, kdy mi začaly některé funkce výrazně chybět.)
První drobnost, kterou mi R# usnadňoval život, byla klávesová zkratka Ctrl+D na duplikaci řádku. Dá se bez toho určitě žít. Kdo by to potřeboval, je na to minimalistický doplněk:
https://marketplace.visualstudio.com/items?itemName=ctlajoie.DuplicateSelection
Quartz.NET je plánovač spouštění úloh v rámci procesu aplikace. Úlohy se plánují tak, že se vytvoří Job (spouštěná úloha) a k němu triggery (kdy se spouští). Quartz.NET umí navíc plány perzistovat do databáze, což může být šikovné k tomu, aby se úloha plánu spustila i tehdy, pokud aplikace v okamžiku, kdy měla být úloha spuštěna, z jakéhokoliv důvodu neběžela – misfire. Obdobně umožní spustit job, který z nějakého důvodu nedoběhl (pád, vypnutí stroje) – recovering.
Tím, že je plán perzistentní, není vhodné jej vytvářet se při každém startu aplikace, protože tím by úplně přišlo o výhody perzistence. Plán vytváříme pouze při aktualizaci aplikace.
Existující plán se smaže Clear na Scheduleru – scheduler.Clear(). Problémem však je, že toto nesmaže plán recovering jobů. Nikdy. Pokud tedy takto smažeme plán a vytvoříme nový, plán recovering jobů zůstává zachován. Po nastartování plánovače jsou recovering joby okamžitě spuštěny.
Řešením může být rozšíření metody ClearData třídy SqlServerDelegate (pokud je perzistováno do SqlServeru touto třídou). Tato metoda je volána pod pokličkou v rámci volání scheduler.Clear(). Rozšíříme ji o volání metody DeleteFiredTriggers.
public class MySqlServerDelegate : SqlServerDelegate
{
public override void ClearData(ConnectionAndTransactionHolder conn)
{
base.ClearData(conn);
DeleteFiredTriggers(conn);
}
}
Dále musí být scheduleru řečeno, že má tuto třídu používat. Při použití rozšíření Quartz.NET o intergraci s Windsor Castle pomocí NuGet balíčku Quartz.Windsor se název typu s assembly uvádí v konfiguraci pod klíč
<item key="quartz.jobStore.driverDelegateType">...</item>
Slides z mé přednášky pro MS Fest Praha z 26.11.2016:
Záznam z přednášky je publikován na našem HAVIT YouTube Channel.
Dotčená témata
Ve VisualStudiu mi přestala fungovat klávesová zkratka Ctrl+Shift+F12, přestože při ověření v Options je korektně namapovaná.
Obvyklou příčinou bývá požírání klávesové zkratky jinou aplikací. Vylučovací metodou se ukázalo, že pachatelem je Microsoft Teams, které když běží, klávesová zkratka ve VS nefunguje (přestože samotná aplikace Teams mezi svými Keyboard shortcuts zkratku nemá uvedenou).
Zavření aplikace Teams pomůže, Ctrl+Shift+F12 začne fungovat.
…pokud byste chtěli hlasovat pro feedback na UserVoice:
https://microsoftteams.uservoice.com/forums/555103-public-preview/suggestions/17156756-application-hides-the-ctrl-shift-f12-keyboard-sh
Pokud bojujete s nefunkčním AutoPostBack na asp:RadioButton v ASP.NET WebForms při asynchronním postbacku, pak je to způsobeno tím, že ASP.NET nerenderuje k RadioButtonu označenému jako Checked klientskou obsluhu události onclick. Zřejmě je to by-design ochrana proti vícenásobné obsluze změn, tedy aby se událost vykonala pouze na jednom z radiobuttonů ve skupině, ne na tom označovaném i odznačovaném.
Možnosti řešení jsou tedy dvě:
CisloSmlouvyNoveRB.InputAttributes["checked"] = "true";
5lides a dema z mé přednášky pro WUG Days Brno ze 8.10.2016:
Záznam z přednášky je publikován na našem HAVIT YouTube Channel.
Slides z mé přednášky pro WUG Days Brno ze 9.10.2016:
Záznam z přednášky je publikován na našem HAVIT YouTube Channel.
Dotčená témata
Po necelém týdnu vzdávám další pokusy s 1Password for Teams. Má sice výrazně přehlednější UI a celkově je UX propracovanější, nicméně pro platformu Windows je to zatím příliš nestabilní a nehotové, než abych to risknul a ještě za to platil minimálně dvojnásobek než za (uživatelsky nepřívětivější) LastPass.
Co zkusím dalšího? Dashlane nebo Roboform?