Záznam z přednášky pro konferenci TechEd DevCon Praha ze 14. května 2019.
Tag Archives: Visual Studio
Novinky v C# 8.0, Visual Studio 2019 a .NET vNext – záznam, dema a slides [Robert Haken, ShowIT SK 2019]
Záznam z mého vystoupení pro ShowIT Bratislava ze 5. února 2019.
Slides a dema:
Dotčená témata:
- C# 8.0
- Indices and Ranges
- Switch Expressions
- Pattern Matching
- Static Local Functions
- Using Declarations
- Nullable Reference Types
- Async Streams
- Target-typed New
- Default Interface Methods
- Null Coalescing Operator ??=
- C# vNext
- Records
- Extension Everything
- Native-Sized Number Types
- Visual Studio 2019
- IntelliCode
- New UI – Startup, New Project, …
- .NET Framework 4.8
- .NET Core 2.2, 3.0
- Entity Framework 2.2, 3.0
- ASP.NET Core 2.2, 3.0
Nahrávka je publikována na našem HAVIT YouTube Channelu.
Novinky ve VS 15.6, C# 8.0, .NET 4.7.3 a Blazor [Robert Haken, HAVIT Vzdělávací okénko 15.3.2018]
Záznam ze Vzdělávacího okénka HAVIT z 15. března 2018. Je publikován na našem HAVIT YouTube Channelu.
Dotčená témata:
- Novinky ve Visual Studio 2017 verze 15.6
- Navigate to Decompiled Sources
- Test Explorer Hierarchy View
- GIT tags
- Novinky v C# 7.3 a C# 8.0
- Tuple Equality Operators
- Generic Constraints on Delegate, Enum
- Native-sized numeric types
- Records
- Asynchronous Streams (Enumeration) and Disposables
- Nullable Reference Types
- Extension Everything
- Blazor (Browser + Razor, WebAssemblies)
Visual Studio a C# vNext – záznamy, dema [G2B TechEd Brno, ShowIT Bratislava, 01/2018]
Záznamy stejné přednášky z konferencí G2B TechEd Brno a ShowIT Bratislava.
Brněnská verze z 30.1.2018 se musela vmáčknout do 45 minut:
Bratislavská verze z 31.1.2018 měla prostor 70 minut:
Záznamy jsou uloženy na našem HAVIT YouTube Channelu.
Dotčená témata:
- Visual Studio 2017 15.6 Preview
- Side-by-Side instalace
- Navigate to Decompiled Sources
- Test Explorer Hierarchy View & Real-Time Tests Discovery
- GIT Tooling – Tags
- C# 7.0 (viz též C# 7.0 – Rychlý přehled novinek)
- Binary Literals
- Digit Separator
- Expression Bodied Members
- Out Variables
- Throw Expression
- Tuples
- Pattern Matching
- Local Functions
- Generalized Async Return Types (ValueTasks)
- Ref Return
- C# 7.1
- Async Main
- Default Literal Expressions
- Inferred Tuple Element Names
- C# 7.2
- Reference Semantics with Value Types (in, ref readonly, readonly struct, ref struct)
- Non-trailing Named Arguments
- Leading Underscores in Numeric Literals
- private protected access modifier
- C# 7.3?
- Equality operators on tuples
- Native-Sized Number Types (IntN, UIntN, FloatN)
- Enum + Delegate Constraints
- C# 8.0?
Materiály z přednášky:
- Dema C# 7.0 – https://github.com/hakenr/CSharp7Demo
- Dema C# 7.1, 7.2, 7.3 a 8.0 – https://github.com/hakenr/CSharp71Plus
- Slides – 2018-01-30 – G2B TechEd Brno – Visual Studio a C# vNext.pdf
Shrnutí mého #NoResharper challenge s Visual Studio 2017
Jak přišlo na začátku roku Visual Studio 2017, rozhodl jsem se jako obvykle zkusit svůj #NoResharper challenge. S každou novou major-verzí VS zkouším, jestli by se dala používat bez Resharperu. Obecně mám rád mnoho z funkcí Resharperu, ale cena, kterou za to mám zaplatit ztrátou výkonu a stability je velkým protivníkem. Štve mě taky, že R# není v podstatě rozšířením, ale znásilní VS tak, že překryje dost podstatnou část jeho funkcí zcela vlastní implementací. Snažím se proto opakovaně najít light-weight setup bez Resharperu, kde bych si vystačil jen s čistým VS a pár lehkými doplňky do něj.
Resharper jsem v minulosti používal intenzivně. V dobách Visual Studio .NET a Visual Studio .NET 2003 to byla nezbytnost. VS2005 přišlo s prvními refaktoringy, tehdy mi to stačilo a fungoval jsem bez R# až zhruba do VS2013, kdy jsem se nechal přesvědčit dát R# další šanci. Resharper mi tehdy výborně posloužil pro nové výzvy spojené s moderními vývojářskými technikami (IoC/DI, unit-testing, …), protože pro mnoho jeho funkcí nebyla rozumná „lehká“ alternativa (dosud nepřekonané T-navigace, Go to definition, Introduce and initialize a field from constructor parameter, Adjust namespaces, atp.).
S příchodem Visual Studia 2017 se poměr sil opět změnil. VS2017 se svojí vylepšenou T-navigací (Go to…), s pomocí Roslyn-based refactorings (e.g. Roslynator) a updaty přinášejícími stále nové vylepšení produktivity mě nejenom zlákalo pro další #NoResharper challenge, ale po zhruba deseti měsících mohu konstatovat, že mi Resharper vůbec nechybí.
Moje aktuální Visual Studio je:
- Visual Studio 2017 Enterprise Edition se všemi aktualizacemi
- Roslynator Refactorings 2017 (Josef Pihrt) – To mě podržte, právě jsem zjistil, že tuto extension mám už týdny vypnutou. …což znamená, že čisté VS2017 s posledními updates bez problémů pokrývá moje každodenní potřeby!!!
- Disable Mouse Wheel Zoom (Noah Richards) – na mý volšový pracky
- Web Compiler (Mads Kristenses) – pro situace, kdy nemám v projektu nastaven Gulp
- Markdown Editor (Mads Kristensen) – překvapivě pohodlná editace MD souborů (plnohodnotná alternativa k MarkdownPad Pro)
- SmartPaster2017 (martin w) – zbytný doplněk pro vkládání víceřádkových textových řetězců
- Add New File (Mads Kristensen) – zbytná drobnost
- Open Command Line (Mads Kristensen) – zbytná drobnost
- File Differ (Mads Kristensen) – zbytná drobnost
Když tak koukám na ten seznam, vypadá to, že bych vlastně mohl fungovat s úplně čistým VS2017 bez větších kompromisů. Největší překvapení pro mě bylo zjištění, že mám Roslynator vypnutý a ani jsem si toho nevšiml. (Vypnul jsem ho s příchodem VS2017 15.3 update, kdy jsem chtěl vyzkoušet novinky v něm.)
(Roslynator Refactorings jsem si zase zapnul, protože mi nepřinášel žádné komplikace, jen drobné příjemné pomůcky pro kódování. Nicméně se ukázalo, že kdyby se mělo sebemenší zaváhání objevit, klidně se obejdu bez něj.)
UPDATE: Pokud postrádáte CamelHumps, zkuste Subword Navigation extension.
Visual Studio: Klávesové zkratky pro navigaci na další/předchozí metodu v kódu
V Resharperu jsou známé klávesové zkratky pro navigaci na dalšího (Alt+Down) resp. předchozího (Alt+Up) membera v kódu. Málo se ale ví, že i čisté Visual Studio toto nyní umí.
Ve Visual Studiu (minimálně ve verzi 2017, ale nejspíš to umí i starší verze) můžete tyto klávesové zkratky získat namapováním příkazů Edit.NextMethod a Edit.PreviousMethod (přestože mluvíme o metodách, ve skutečnosti se skáče po memberech). Tyto commandy bývaly funkční pouze pro Visual Basic, jak se teď ale vývoj pro všechny jazyky sjednocuje, fungují i v C#:
…já asi zvolím klávesové zkratky Ctrl+Up, Ctrl+Down, protože mi to nějak lépe jde pod ruce a to výchozí skrolování, co tam je, je stejně k ničemu. Mimochodem Alt+Up/Down používám pro posun řádku/selection o řádek výš/níž.
MSB3270 Processor Architecture Mismatch Warning – jak ho skrýt z výpisu chyb
Pokud máte stejně jako já rádi čisté okno Error List ve Visual Studiu, pak vás může otravovat warrning typu
There was a mismatch between the processor architecture of the project being built „MSIL“ and the processor architecture of the reference „XYZ, Version=XXX, Culture=neutral, processorArchitecture=x86“, „XXX“. This mismatch may cause runtime failures. Please consider changing the targeted processor architecture of your project through the Configuration Manager so as to align the processor architectures between your project and references, or take a dependency on references with a processor architecture that matches the targeted processor architecture of your project.
Nechci teď rozebírat, jak vyřešit příčinu hlášky, ale mám návod, jak se vypořádat se situací, kdy se příčiny zbavit nechcete/nemůžete, ale potřebujete hlášku potlačit (suppress).
Do .csproj
souboru příslušného projektu stačí do úvodní sekce PropertyGroup
přidat:
<PropertyGroup> <ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch> </PropertyGroup>
Jenom pozor, že tím můžete zakrýt i další varování, která se objeví později a mohou vás zajímat.
Visual Studio: Když nefunguje klávesová zkratka Ctrl+Shift+F12 – Next Error
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
Visual Studio: Úprava snippetu „ctor“, aby kurzor po rozbalení skončil v místě pro zadávání parametrů
Pokud používáte snippet „ctor“ pro vytváření konstruktorů tříd, může vás štvát, že kurzor po jeho rozbalení skončí připraven v těle konstruktoru a nikoliv v místě pro zadávání parametrů.
Drtivá většina constructorů v dnešní době stejně pouze přebírá hodnoty parametrů, které uloží do lokálních privátních fieldů. Často readonly, většinou jako dependencies v patternu Constructor Injection z rodiny Dependency Injection. Takové konstruktory se poměrně efektivně vytvářejí s použitím akce „Introduce and initialize field“ na zapsaném parametru (ať už za použití Resharperu, nebo Introduce and initialize field extension).
Chceme-li změnit pozici kurzoru, stačí upravit snippet ctor a umístit marker $end$ na místo, kde chceme kurzor připravit.
Pokud máme Resharper, dostaneme se na editaci snippetu přes menu Resharper ~ Tools ~ Templates Explorer. Vybereme scope C# a editujeme „ctor“:
public $classname$ ($END$) { }
Bez Resharperu je potřeba editovat přímo soubor snippetu na disku, najdete ho v cestě C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC#\Snippets\1033\Visual C#\ctor.snippet. Je to krátké XML v kterém příslušný blok rychle najdete.
Výsledné chování je pak mnohem přímočařejší:
The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel
Mě touto hláškou obšťastnil sign-in dialog ve Visual Studiu v lab Virtual Machine, ale můžete ji potkat i jinde. V mém případě byl důvod v nepřiměřeně se rozcházejícím čase virtuálního stroje a času skutečného (na serverech MSFT).
Stejně tak například bez rozumného času nejde Windows Update.