►
Description
Tune in to learn how to increase your productivity using the latest features in Visual Studio 2017! New .NET language features and refactorings will make your C# coding and debugging more effective than ever. We'll cover new Intellicode features, code cleanup, multi-caret support, keyboard profiles, performance improvements and much more! We'll even add a sneak peek of features that will be coming in Visual Studio 2019!
A
Hello,
we're
back
at
the
dotnet
comp,
so
welcome
to
my
talk.
It's
the
latest
productivity
updates
in
Visual
Studio
2017,
specifically
for
version
15.8,
I'm
kendra
havens,
I'm
a
program
manager
on
dotnet
in
Visual
Studio.
So
if
you
haven't
watched
one
of
our
productivity
talks
before
we
always
try
to
cram
in
the
tips
and
tricks
and
just
the
little
things
that
make
coding
and
Visual
Studio
so
much
easier,
so
we
have
a
lot
of
awesome
updates
to
share
and
again
a
lot
of
these
that
I'll
be
going
through
we're
all
customer
asks.
A
A
First,
I'll
talk
about
all
of
the
performance
improvements
that
we've
packed
into
all
of
the
visual
studio
version
like
1500
releases
and
also
specifically,
what
we
got
into
15.8
after
that
I
will
basically
do
one
whole
demo
of
refactorings
and
code
fixes
source
link
debugging
the
different
code,
cleanup
options
that
we've
recently
added
as
well
as
editor,
config,
tooling,
that
we
have
and
in
Teleco.
If
you
don't
know
what
some
of
these
are.
A
You
were
in
for
such
a
big
treat
I'm,
so
excited,
ok,
so,
first
off
performance,
so
specifically
in
Visual,
Studio
2017
version
15.8,
the
very
latest
stuff
we
are
still
focusing
so
much
on
solution.
Load
performance
is
always
one
of
the
top
things
that
customers
bring
up
and
solution.
Load
is
also
right
at
the
top
within
the
performance
category.
So
just
in
general,
across
this
release,
cycle
solution
load
is
already
25
percent
faster
in
Visual
Studio
2017
than
it
is
in
2015.
I,
actually
think.
A
That's
a
super
conservative
estimate,
so
I'd
really
love
to
know
what
you
all
experience
in
the
wild.
If
you
ever
wanted
to
like
do
a
blog
post
about
how
much
better
it
is
working,
firstly,
your
solution
loved.
Is
it
something
we
also
focused
on
improving
performance
for
is
branch,
switching
that
can
really
interrupt
your
development
flow
if
you're
not
being
able
to
switch
in
between
branches
really
quickly.
So
we
we
are
focusing
on
that.
A
We
also
focused
on
unloading
and
reloading
c-sharp
and
visual
basic
projects,
making
that
a
lot
faster
as
well
as
test
execution
now
test
execution,
I'm
extra
excited
about,
because
that's
what
my
team
specifically
works
on
every
single
day,
besides
just
the
general
productivity
category,
so
listening
for
large
test
projects,
if
you
run
a
few
tests
within
them
that
test
execution
is
where
we've
seen
the
most
improvement.
So
in
our
labs
for
an
MS
test
project
with
many
different
test
projects
with
over
10,000
tests,
when
you're
only
running
a
single
test,
it
can
execute
82%
faster.
A
That's
huge
we're
so
excited
about
that.
I
can't
wait
to
show
that
later,
so
also
I
just
want
to
call
out
earlier
across
the
versions
in
general
15
updates
much
better
solution
load.
During
the
whole
time,
we've
made
incremental
improvements
as
well
as
much
better
test
discovery
and
I
can't
talk
about
performance
with
actually
also
having
a
video
all
on
test
discovery.
So
I
have
a
side-by-side
comparison.
Video.
You
will
see
solution
load
just
a
little
bit
in
the
beginning.
A
It
kind
of
happened
so
fast,
because
I
didn't
use
a
big
enough
solution
for
this
that
it's
it's
hard
to
see
the
difference
and
in
the
improvement
across
these
updates.
But
test
discovery
is
huge.
So
on
the
Left
we
have
Visual
Studio
2017,
update
15.5
and
on
the
right
we
have
update
15.8
now
they're,
both
loading,
a
10,000
tests
project
and
you
can
see
on
the
right-
it's
already
finished,
so
that
was
10,000
tests
discovered
in
less
than
5
seconds.
A
It
was
automatically
discovered
because
it's
just
running
over
my
source,
I
didn't
need
to
build
and
then
I
could
execute
that
really
quickly
on
the
left
looks
like
we're
still
not
quite
up
to
oh
okay,
so
it
looks
like
it's
just
gonna
be
10,000
tests,
but
when
I
right
click
I
can't
quite
execute
it
yet
because
it's
still
finding
all
the
information
and
loading
it
into
the
test.
Explorer
and
now
it's
discovered
so
that
took
about
29
seconds.
A
Compare
that
to
what
it
is
now
at
four
point:
seven
to
five
huge
improvement:
okay,
so
moving
on
from
performance,
let's
dive
right
into
productivity
tips
and
tricks
now
I
want
to
give
you
guys
sort
of
a
let's
see.
What
do
you
call
it
warning?
The
next
slide
is
really
text
heavy
okay.
This
is
because
we
have
packed
in
so
many
features
into
even
minor
visual
studio
releases,
so
here
on
the
right,
I've
kind
of
sectioned
off
everything
I'm
about
to
dive
into
for
15.8.
A
This
will
include
new
keyboard
profiles
for
the
S
code,
ant
resharper
refactorings,
but
all
of
those
you
access
through
control,
dot
and
their
code
fixes
we've
got
for
loop,
two
for
each
invert.
If
converting
to
a
ternary
conditional,
you
can
have
a
code
fix
to
add
a
parameter
from
the
call
site,
as
well
as
removing
extra
parentheses,
which
I'm
going
to
use
all
the
time.
We
also
have
finally
multi
cursor
mode.
Officially
in
15.8,
you
don't
need
extra
tennis
extra
extension.
You
don't
need
to
turn
on
a
feature
flag,
it's
just
there.
A
By
default,
it
is
ctrl.
Alt
click
so
excited
to
show
that
to
you
guys,
we
also
added
improved
our
navigation
a
bit
so
the
ctrl
T
navigation
or
our
go-to.
All.
We
also
added
a
recent
files,
a
shortcut
that
I'll
show
you
soon
and
we
also
have
a
navigation
keyboard
shortcut
for
going
to
the
enclosing
block.
A
Then,
in
my
demo,
I'll
dive
into
the
code
cleanup
one-click
code,
cleanup,
controlled
KD.
We're
really
excited
to
share
more
about
that,
and
the
code
cleanup
configuration
and
tools,
options
that
we've
added
I'll
also
cover
Intelli
code,
which
is
really
exciting.
Ok
throughout
this
demo,
I'll
also
be
wanting
to
call
out
just
the
major
improvements
that
we've
made
previously
across
visual
studio
versions,
because
there's
so
many
I'll
definitely
go
over
a
source
link.
A
Debugging
oops
I
think
it
did
come
out
in
15.8,
but
it
is
compatible
back
to
15.7,
which
is
very
exciting,
so
I'll
kind
of
be
covering
navigate
to
do
assembly's
go
to
definition.
All
of
the
tests
explore
improvements,
just
that
we've
made
in
earlier
versions.
Just
so
people
know
they
they're
hearing
the
big
stuff.
A
Okay
did
I
call
out
everything:
yeah
that
looks
good:
okay,
okay,
let's
dive
into
the
demo
a
skate
PowerPoint
gross
okay,
so
I'm
generally
going
to
be
opening
our
smart
hotel
360
app.
This
app
you've,
probably
seen
if
you
watched
any
of
our
build
demos.
What
were
the
most
recent
things?
If
you
have
gone
to
any
of
the
Visual
Studio
Live
etcetera,
you
might
have
seen
our
smart
hotel
360,
it's
just
a
general
web
app
that
runs
on
an
azure
app
service
that
allows
hotel
guests
to
book
rooms
or
book
services
through
our
website.
A
Yeah
loaded
and
boom
five
thousand
tests
discovered
in
a
matter
of
seconds
so
nice.
So,
as
you
can
see,
I
can
expand
the
test
Explorer
to
see
a
hierarchy
view
that
was
a
huge
customer,
asked
it's
organized
by
project
namespace
in
class.
I.
Think
we
got
that
in
first
in
15.6,
but
still
major
feature.
A
People
are
excited
about
another
major
one,
since
we're
already
inside
of
the
test,
Explorer
is
actually
making
more
risk
spent
responsive
test
runs
so,
as
I
run
this
you
can
see
test
pending
to
execute,
get
this
clock
icon
and
tests
that
are
currently
executing
get
a
progress
ring.
This
is
so
key
when
you
have
a
really
long
test,
run
and
you're,
trying
to
figure
out
what
is
holding
up
your
test
run
and
what
is
taking
so
long
and
you
have
a
suspicion.
A
A
I
didn't
show
off
more
of
test
discovery
if
I
uncomment
a
test,
it'll
automatically
appears
in
the
test.
Explorer
I
mean
yeah
I'll,
never
get
tired
of
doing
that,
so
it
didn't
require
a
bill.
Turret
actually
to
appear
super
super
helpful.
Okay,
so,
with
the
first
code
fix
that
I
want
to
show
off,
it
is
actually
caused
by
a
merge
conflict.
So
I'll
go
ahead
and
cause
the
merge
conflicts.
Really
quick.
A
So
I'll
go
up
to
merge
in
the
team,
Explorer
and
I'll
select
to
merge
master
with
this
add
test
branch
that
I
already
had
oh
yeah
and
I'll
go
ahead
and
save
so
merge
conflict
appears
because,
on
my
other
branch,
I
had
already
tried
to
add
a
similar
method
at
the
same
place.
You
can
see
the
code
fixes
appearing
already,
so
you
can
kind
of
give
us
some
more
room
here.
A
So
I
can
see
when
I
hit
control
dot,
which
opens
up
the
light
bulb
that
I
get
I
can
choose
what
branch
I
would
like
to
take
in
order
to
resolve
the
merge,
conflict
and
I
can
even
choose
both
and
it'll
just
erase
the
comments
that
the
merge
conflict
inserted.
So
we'll
go
ahead
and
take
the
head
there.
We
go.
A
A
Here
we
go
okay,
now,
I
feel
better.
Sorry,
okay,
so
let's
go
ahead
and
check
what's
happening
with
this
null
check.
Why
is
it
causing
it?
Why
is
it
failing
so
since
I'll
be
working
a
lot
with
tests
and
trying
to
get
it
to
pass
again?
I'm
gonna
go
ahead
and
start
live
unit
testing
now
I'm
sure
a
lot
of
people
have
heard
about
it
for
now,
but
just
to
make
sure
everyone's
on
the
same
page
live
unit.
A
Testing
can
listen
to
your
code,
changes
as
you
type
and
run
to
any
tests
that
are
affected
by
those
code,
changes
in
the
background
as
you're
developing,
and
it
will
give
feedback
in
the
margin
on
that
test,
whether
for
whether
to
so,
you
know
whether
or
not
it
passed
or
failed.
So
if
you
guys
remember,
I
had
5,000
tests
in
this
project.
A
So
this
is
generally.
This
is
part
of
my
Go
Green
request.
You
could
see
that
the
title
of
the
test
was
my
go.
Green
ol
test
was
failing,
so
this
is
if
a
customer
at
our
hotel
wanted
to
go
green
for
a
while
and
opt
out
of
that
all
of
the
new
towels
in
like
getting
new
sheets
every
single
day,
because
nobody
needs
that
much
so
this
checks.
So,
as
part
of
that
function,
they
can
also
text
housekeeping
and
we
can
insert
a
message
for
them,
but
it
looks
like.
A
You
can
actually
manage
the
options
of
why
it
will
appear
so
I'm
getting
my
message
as
null
and
it's
no
reference
exception,
so
I'll
go
ahead
and
stop
debugging
and
add
a
null
check.
One
of
the
many
code
fixes
and
refactorings,
of
course,
is
our
null
check.
You
might
have
seen
it
before,
but
here's
what's
brand-new
in
15.8
when
I
drag
this
down
and
I
make
it
a
part
of
my
if
statements,
that's
checking
whether
or
not
the
Simar
has
had
housekeeping
within
the
past
seven
days.
I
get
an
interesting
little
sort
of
prompt
here.
A
I
can
tell
that
my
parentheses
are
actually
grayed
out.
So
in
15.8
we
added
remove
unnecessary
parentheses
and
now
that
I
see
that
it's
there
I'm
actually
noticing
I
get
this
everywhere.
In
my
code,
I
guess
I
was
always
the
kid
in
the
English
classroom.
That
added
way
too
many
comments
to
their
sentence.
So
I
guess,
when
I
learned
code
learned
to
code,
I'd
started
doing
the
same
thing
with
parentheses.
So
luckily
Roslyn
we
have
a
Rossellini
analyzer
to
take
care
of
that
for
you.
A
So
something
else
you
might
have
noticed
when
I
was
opening.
My
code
fix
for
this
area
when
I
hit
ctrl
click
inside
of
an
if
statement
it
actually
offers
for
me
to
invert
the
if-else
statement,
so
I
can
go
ahead
and
hit
that
and
that's
just
a
really
kind
of
clever
helpful
thing
that
helps
you
refactor
code
really
easily.
Something
I
also
wanted
to
call
out
that
as
soon
as
I
placed
in
these
nil
checks,
I
now
have
passing
tests
so
live
unit.
Testing
was
already
in
the
background
re
running
my
tests
for
me.
A
Invert
and
I'll
check
up
here,
but
I
do
really
hate
when
return
false
is
before
return.
True,
I,
don't
know
why.
That's
just
me
so
I
think
I'll
go
ahead
and
go
back
there
we
go
so
there
we
go.
So
we
got
a
few
other
options
within
when
we
hit
control
dot
and
we
had
clicked
inside
the
if
statement.
One
of
these
is
converting
it
to
a
conditional
expression.
A
So
that
was
a
very
simple,
so
this
converts
a
very
simple
if-else
statement
that
returns
true
or
false
into
a
ternary
expression
and
then,
of
course,
I'm
prompted
to
also
just
use
an
expression
body
for
this
method.
Something
I
want
to
call
out
is
that
if
I
had
a
more
complicated
if-else
statement
that
maybe
had
an
if
statement
nesting
inside
of
it-
and
it
wasn't
always
returning
true
there
oops.
A
There
we
go
if
I
try
to
trigger
this
code,
fix
again,
I
actually
no
longer
get
the
prompt
to
to
transform
it
into
a
ternary
condition.
So
it
kind
of
only
suggests
it
when
it's
a
simple
fix
that
you
can
easily
do
in
your
code
and
doesn't
when
your
code
is
a
bit
more
interesting,
so
I'll
go
ahead
and
convert
it
to
a
ternary
expression
and
then
go
ahead
and
make
that
a
expression
body
feels
really
good.
A
Okay,
it's
got
my
demo
cheat
sheet
to
make
sure
you
don't
skip
any
of
these,
because
I
don't
going
to
vast
okay.
So,
when
we're
texting
housekeeping,
this
client
is
sending
us
a
message
and
I
actually
wrote
an
azure
cognitive
service
that
could
run
over
the
guest
comments.
That
guests
are
leaving
and
actually
give
a
sentiment
score
for
how
they're
doing
so
within
this
I'm
actually
iterating.
A
Through
this
little
sentiment
batch
result
item
in
order
to
calculate
the
score
in
text
housekeeping
one
of
the
refactorings
we
added
is
the
ability
to
convert
from
four
to
four
each,
so
I
can
rename
my
variable
that
I'm,
using
to
iterate
it
and
I,
can
also
convert
back
from
a
for
loop
to
a
for
each
just
a
really
simple
code,
refactoring
that
is
all
about
sort
of
someone's
taste
and
how
easy
it
is
for
them
to
read
code.
We
now
have
right
in
the
editor,
so.
A
Let's
see
if
I
yeah,
okay,
I'm
doing
good,
so
one
of
the
refactorings
that
works
right
in
this
area
is
converting
to
linked
to
for
each.
So
we're
really
excited
to
show
this
off,
because
it
was
definitely
a
top
customer
request.
So,
if
I
go
ahead
in
whoo
select,
oh
sorry
shift
alt
select
my
link
statement.
A
So
we
don't
yet
have
the
code
fix
to
convert
for
each
back
to
a
link,
but
we
really
hope
I
hope
that
I
can
demo
that
around
that
16
previews,
maybe
connect
time
frame,
maybe
ignite
time
frame
it'd
definitely
be
in
preview
there.
But
we
understand
that
that
is
definitely
a
high
interest
code
fix
to
get
in
okay.
A
So
going
back
up
to
this
calculate
chocolate
method,
I
am
actually
only
texting
housekeeping
to
leave
more
chocolates.
If
the
sentiment
score
is
underneath
point
5,
so
it
analyzes
the
guests
comment
and
then
it
gives
a
score
from
0
to
1.
It's
just
a
pretty
easy
to
use
as
your
cognitive
service.
So
what
I'm
not
doing
is
actually
calculating
how
many
chocolates
that
we
should
leave
based
on
how
a
negative
their
score
was.
So
what
if
I
went
ahead
and
added
that
here?
A
So
what
if
I
did
something
like
10,
uh-oh,
I'm
gonna,
get
warnings
for
using
way
too
many
parenthesis
again
see
told
you
guys.
So
what?
If
I
had
something
more
like
this?
Let's
go
ahead
and
remove
that
extra
parenthesis
and
you
actually
see
I
had
another
code
fix
pop
up
there.
I
can
also
add
the
extra
parenthesis
to
make
the
meeting
more
clear,
because
hey
order
of
operations
is
pretty
smart.
There
we
go
we'll
have
that
all
in
one
line,
because
it's
easier
to
read.
A
So
in
this
case,
if
the
customer
had
a
sentiment
of
like
point,
it
would
get
down
here
and
it
times
it
by
ten
sowed
before
and
then
ten
minus
four
six,
so
I
would
text
housekeeping
to
leave
six
extra
chocolates
on
the
pillow
right,
but
the
text
housekeeping
method
doesn't
actually
have
that
parameter.
So
this
is
our
code
fix
we're,
adding
the
parameter
from
the
call
site.
A
So
now
that
I
did
that
you
see
I,
don't
get
an
air
and
if
I
actually
navigate
to
text
housekeeping
which
control
click,
you
can
see
that
it
added
this
double.
So
if
I
actually
went
to
the
air
list,
you'd
see
I
call
this
method
in
a
lot
of
other
places,
so
I
should
definitely
add
a
default
value
and
that
takes
care
yeah
of
the
other
issues
I
was
having
so
I
definitely
want
to
include
this
in
housekeeping
in
my
message,
so
I
might
as
well
just
be
using
in
interpolated
string.
A
That
was
such
an
easy
fix
to
do
feels
so
good
man
interpolated
strings,
get
onboard
everyone,
okay,
so
something
you
might
have
noticed.
Let's
see
if
I
got
everything,
yep
looks
good.
Okay,
so
something
you
might
have
noticed
when
I
was
working
in
the
calculate
chocolate
method
was
I,
didn't
actually
have
any
on
live
unit
testing
test
running.
That's
because
the
tests
that
I
have
for
this
isn't
actually
included
in
live
unit.
Testing
and
I'll.
Show
you
why
so
I
want
to
navigate
to
my
chocolate
sentiment
test.
A
So
I
should
use
ctrl
T
for
that
right
and
I
could
use
the
regular
camelcase
searching
was,
which
is
pretty
fantastic
or
let's
say
it's
a
Monday
and
I.
Don't
actually
remember
the
camel
case,
or
even
like
my
test
name,
I
can
also
choose,
but
I
dunno
I
was
working
in
it
recently.
I
can
also
just
type
r
now
so
it'd
be
ctrl,
T
R
and
that
will
bring
up
all
of
the
files
I've
most
recently
been
using.
A
You
can
also
click
this
little
recent
files,
clock
icon
in
order
to
open
this
up
so
ctrl
T
navigation
has
always
had
you've
been
able
to
type
enough
for
specifically
searching
for
files,
at4
type
sanam
for
members.
Now
we
have
our
recent
piles,
so
pretty
wonderful
I'll
go
over
to
my
chocolate
sentiment
so
test.
So
this
test
has
a
skip.
One
live
unit,
testing
category
because,
as
you
remember,
this
is
actually
Colleen
and
Asha
cognitive
service
and
I.
Don't
exactly
want
that
running
every
single
time
that
I
make
a
code
change
right?
A
It's
not
that
that
would
be
too
many
interactions,
but
I
would
not
expect
to
get
like
3,000
interactions
in
one
coding
session
from
the
iShare
cognitive
service,
so
I
probably
just
want
to
keep
those
a
manual
run.
So
this
test
is
actually
in
a
test
file
with
several
other
projects
that
are
included
in
live
unit
testing.
But
since
this
has
a
skip
category,
I
can
avoid
it
okay,
so
this
test
is
actually
feeling
so
it
looks
like
it
actually
doesn't
have
enough,
let's
see
so
inputs
returning
to
grant
a
chocolate
sentiment.
A
So
what
I
should
do
is
put
in
some
more
guest
comments
that
are
more
negative,
so
I
can
select
these
and
hit
ctrl
D
to
duplicate
them.
That's
one
of
the
newer
code
fixes
as
well
and
then
get
ready
for
it.
Multi
cursor
I
can
hit
ctrl
alt
and
click
in
multiple
places
in
order
to
edit
code
in
all
of
them,
so
I'll
say
very
bad.
Awful
means
la
chocolate.
A
There
we
go
and
as
you
notice
as
you're
calm,
your
service
is
pretty
cool
here,
I'm
actually
entered
in
multiple
different
languages
and
then
it's
converting
it
into
the
sentiment
score
that
I
need.
So
that's
just
also
a
really
helpful
thing.
So
it
looks
like
I
added
four
more
negative
comments.
Oh
wait.
Let's
see
I
think
I
misspelled
chocolate
can
I
go
ahead.
Oh
I'd
undo
all
of
them.
That's
right!
Oh,
but
if
I
actually
still
have
my
cursor
there,
so
I'll
go
ahead
and
spell
it
correctly.
A
Running
running
there's
the
tiny
running
like
I
was
talking
too
long.
Oh
there
we
go
okay,
so
it
passed.
A
Okay,
so
I
wasn't
super
familiar
with
a
sure
cognitive
services
when
I
was
first
building
up
this
app
one
thing
that
was
really
really
helpful
when
building
out
my
service
for
this
I
needed
to
learn
a
few
couple.
Things
are
a
few
things
about
this
new
gate
reference
that
I'm
using
and
so
I
didn't
know
exactly
what
they
expected
to
have
like
a
multi-language
input.
A
I
didn't
know
how
we
needed
to
read
the
guest
comments
as
strings
into
the
correct
format
in
order
to
make
like
a
language
batch
result,
so
I
could
use
just
my
cursor
to
hover
over
it
and
get
more
info
about
what
this
method
expects
me
to
be
infini.
But
one
thing
that
was
super
helpful
was
navigating
to
the
decompiled
source,
so
this
is
navigate
to
decompiled
assemblies.
A
You
do
need
to
turn
it
on
it's
not
on
by
default.
You
can
turn
it
on
in
the
text.
Editor
whoops,
that's
not
it
I
thought
it'd.
Take
me
right.
There
editor
there
we
go
so
it's
the
text.
Editor
I,
think
it's
C
sharp
and
advanced.
So
this
is
your
enable
navigate
to
decompiled
sources,
and
it
is
still
in
experimental,
so
we
partnered
with
aisle
spy
to
use
their
decompiler
in
order
to
do
compiler
source,
and
usually
you
will
see
like
a
EULA
agreement
pop
up
to
make
sure
that
we're
allowed
to
be
decompiling.
A
One
of
your
new
great
references
so
make
sure
you
pay
attention
to
that.
But
I
know
this
is
eyes.
Are
cognitive
services
they're
totally?
Okay
with
me
doing
it?
So
if
you
focus
back
in
here,
you
actually
see
more
than
just
getting
what
order
of
strings
I
needed
to
read
into
this
language,
ID
and
then
text
I
also
got
that
Oh
language
they're,
expecting
a
two-letter
iso
representation
so
like
ian
for
english
or
yes
or
for
spanish.
That's
really
helpful
know
what
input
they're
expecting
so--that's
navigate
to
decompiled
sources,
but
what?
A
A
Function
for
my
user
is
that
so
the
guests
of
the
heart,
our
hotel,
would
be
able
to
order
an
airport
and
get
earth
I
order,
a
shuttle
in
order
to
get
to
the
airport.
In
order
to
do
this,
I
took
a
dependency
on
Casey
Lewin,
who
it's
bus
helpers,
a
nougat
reference.
So
let
me
show
you
what
source
link
debugging
can
do?
I
can
set
a
breakpoint
and
I'll
go
ahead
and
debug
this
test.
A
So
as
soon
as
I
step
into
this
since
I
know
this
nougat
references
source
link,
I'm,
actually
stepping
in
to
the
reference,
so
I
can
see
how
someone
else's
nougat
reference
is
handling
the
inputs.
I,
give
it
as
I
step
through
it.
If
I
hover
over
this
little
bus
helper
GCS
file
at
the
top
I
can
see
that
this
source
is
actually
in
my
app
local
data
sources,
so
a
data
source
server.
A
So
this
is
actually
not
a
part
of
my
source
code,
but
since
I
case
Leland
hoot,
the
package
maintainer
was
able
to
publish
it
with
dotnet
core
SDK
2
dot
1.3
or
later,
and
all
the
maintainer
--zz
need
to
do
is
change
a
few
things
within
the
cs,
proj,
in
order
to
enable
this
I'm
actually
able
to
step
through
her
source.
So
something
you
also
see
is
that
this
also
has
a
commit
ID
within
it.
So
you
actually
know
the
particular
commit
that
the
publisher
used
to
publish
their
new
yet
package.
A
So
this
is
not
recompiling
my
code,
but
I
can
step
back
and
see
what
the
local
variables
were
and
their
values
when
I
had
compiled
of
that
step.
This
is
super
helpful
if
you
for,
if
you
ever
realize
you
stopped
just
a
little
bit
too
far,
and
you
don't
want
to
recompile
that
line
of
code
by
like
clicking
run
to
click
above
your
method
or
above
your
stuffer,
where
you
currently
are.
A
A
So
we're
really
excited
to
show
off
that
historical
debugging
feature
okay,
so
that
was
sourcelink
debugging,
as
well
as
the
Renta
click
and
step
back
debugging,
all
of
which
were
really
excited
about
the
next
major
thing
that
I
want
to
talk
about
is
Intelli
code,
so
we've
always
known
generally,
like
good
programming
practices
to
have
and
what
we
should
be
recommending
to
users.
But
it's
about
time
machines
started
teaching
us
instead,
so
in
Teleco
do
is
an
extension
right
now
in
Visual
Studio.
So
it's
not
a
very.
A
By
default,
you
gotta
go
grab
it
I
would
highly
recommend
doing
so
in
Teleco
is
an
extension
that
offers
better
dock
completion,
better
overloads
and
a
few
other
things.
So
what
it
is
is
a
machine
algorithm
that
ran
over
2,000
dotnet
repositories
that
are
in
the
open
source
out
on
github
and
figured
out
what
the
best
coding
practices
in
coding
styles,
people
are
using
in
certain
situations.
A
So
let
me
show
you
it
in
action,
so
here
I'm
calling
dot
on
this
little
first
shuttle
a
string
so
the
most
common,
overloads
or
properties
or
sorry,
methods
that
people
would
use
on
a
string
are
now
listen
it
up
at
the
top
before
without
intellicus
Hort
of
have
the
static
alphabetical
list.
That's
not
getting
people
anywhere
fast,
so
it
actually
is
saying
that
the
most
common
property
that
people
use
in
a
dock
completion
would
be
length
on
string.
So
intellicus
super
great
in
that.
A
If
I
change
this
to
expect
a
string
array,
instead
of
just
a
var
and
I
type,
dot
completion
again
I
actually
now
get
split
at
the
top.
So
that's
what
it
expects.
So
if
I
went
ahead
and
did
that
and
then
I
typed
a
parenthesis
in
order
to
trigger
my
overload
suggestions,
you
can
see
Intelli
code
again
so,
which
is
helpful
because
split
actually
has
ten
overloads
and
it
can
tell
me
what
is
the
most
common
overload
used
for
this
method.
So
it's
super
helpful.
A
So
even
if
I
change
this
back
to
var
now,
I
mentioned
that
in
Telugu
can
also
learn
what
context
you're
operating
in
so
I
just
called
split
right
above
this
method.
It
now
thinks
as
soon
as
someone
calls
split,
it
is
more
likely
that
they
call
trim
so
you'll
notice.
If
this
had
no
context
around
it,
it
still
would
have
been
dot
length
up
at
the
top,
just
a
really
cool
feature,
and
then,
if
I
do
my
dot
completion
a
third
time,
it
now
knows
that
I'm
actually
just
repeating
myself.
A
A
The
last
thing
I
want
to
call
out
about
Intelli
code
is:
let's
take,
for
example,
KC
Olin,
hoots
bus
helper,
new
cut
reference,
so
I
don't
actually
have
this
class
library.
I
was
not
one
of
the
libraries
that
Intel
code
trained
on
properly,
probably
or
it's
just
not
used
as
commonly.
So
you
won't
see
until
a
good
suggestions
there,
which
makes
a
lot
of
sense.
A
That
I
want
to
show
you
or
sorry.
This
is
a
navigation
shortcut
is
ctrl
out
alt
up
arrow.
That
is
jumping
to
your
enclosing
block,
so
it
only
worked
for
jumping
from
the
bottom
to
the
top.
So
if
I
put
my
cursor
inside
of
my
class
and
hit
ctrl
alt
up,
arrow
I
will
jump
to
the
top
of
my
class.
So
just
another,
just
nice
little
navigation
feature
that
you
find
yourself
using
a
lot.
So
look
what
is
the
code
style
and
spacing
happening
over
here?
This
does
not
look
good.
A
Don't
worry,
we'll
get
rid
of
this
in
a
second
one
thing
that
we
are
really
excited
to
introduce
is
the
one-click
code
cleanup,
so
that
is
control
KD,
feel
so
much
better
with
my
spacing
but
I'm
noticing
it
didn't
actually
apply
the
VAR
rule,
even
though
I'm
being
prompted
with
a
code
suggestion
for
it
to
apply
so
in
order
to
change
this,
but
that's
actually
because
we
put
the
vara
code
style
role
as
unchecked
by
default
and
I'll
show
you
what
I
mean
so
I
can
go
to
my
cleanup
options
and
that
is
in
text.
A
Editor
c-sharp
code
style
format
in
general,
or,
if
you
forget,
that
line
of
things
just
hit,
ctrl
Q
it'll
put
your
cursor
and
quick
lunch
and
you
can
type
in
cleanup
and
it'll
bring
you
right
where
you
need
to
be
so.
This
apply
implicit,
explicit
type.
References
is
now
unchecked.
By
default.
We
realize
that
would
probably
be
a
more
gentle
interaction
to
code
cleanup.
We
don't
need
people,
you
know
breaking
each
other
into
jail
with
that
one.
A
A
Okay,
so
I
also
wanted
to
mention
really
click
that
when
I
was
in
the
options
up
there
I,
you
can
also
set
a
lot
of
your
code
style
preferences
in
the
IDE
from
visual
studio.
So
it's
interesting
I
actually
have
preferring
explicit
type
but
I'm
not
actually
offering
a
suggestion.
Only
a
refactoring
but
you're
still
seeing
that
I'm
getting
a
well
I
was
getting
a
suggestion
in
my
actual
code
file.
A
This
is
because
I
have
an
editor
config,
so
editor
configs
can
overrule
the
code
style
rules
that
you
have
set
through
the
visual
studio,
UI
and
I
wish
that
I
could
tell
mo
the
ability
to
export
the
code
style
rules
that
you've
already
set
through
visual
studio
into
an
editor
config
file
format.
That's
something
we're
definitely
working
on.
We
hear
you,
hopefully,
maybe
that'll,
be
like
a
dead
16
preview.
I'm.
Sorry,
Visual,
Studio
2019,
a
preview
kind
of
thing
that
we
can
show
later,
but
not
yet,
but
we're
working
on
it.
A
So
if
you,
a
lot
of,
you
may
have
heard
about
editor
config
before
it's
absolutely
like
applauding
the
community
kind
of
thing
editor
config
existed
before
like
a
part
from
dotnet,
and
we
adopted
it
because
it
was
an
awesome
sort
of
code,
style
and
Universal
formatting
guide
that
people
could
use
across
IDs
and
languages.
So
we
adopted
it
and
worked
with
that
community
awesome
stuff
and
created
our
own
dotnet
code
style.
So
this
is
what
you
see
in
this
editor
config
that
I
have
in
my
solution,
but
you
realize
that
yeah
these
can
be.
A
These
might
be
kind
of
tedious
to
set
yourself.
So
what
I
actually
want
to
show
you
is
where
editor
config
and
in
Teleco
and
intersect,
so
I'll
actually
go
ahead
and
save
this
file.
A
Okay,
so
over
in
my
solution,
Explorer
like
let's
say
that
I
wanted
to
I
really
liked
all
of
the
coding
style
in
my
public
web
dot
test
project.
If
I
wanted
an
editor
config
that
exactly
matches
the
code
style
that
I'm
already
following
in
that
project
and
tella
code
can
help
me
make
that.
So
what
I
need
to
do
is
right.
Click.
Add
a
new
item
and
search
for
editor
config,
so
we
have
a
default
editor
config
and
a
dotnet
editor
config.
A
But
if
you
have
the
entelechy
extension
installed
on
your
machine,
you
can
actually
create
an
intel
occurred
in
fir'd,
editor
config
now.
Another
awesome
that
thing
about
utter
config
is
that
it
can
nest
and
its
director
directory
based.
So
this
editor
config
will
still
inherit
from
the
root
that
I
have
at
on
my
solution
level,
but
any
rules
that
it
has
specifically
said
it
will
overrule,
but
only
within
my
public
web
test
context,
so
I
can
have
different
code
style
rules
in
my
test
project
versus
my
project
code.
A
A
A
You
will
now
see
it
rerun
over
this
test
or
maybe
not
or
maybe
I'll
switch
to
this
again
and
save
it
and
then
go
back
there.
We
go
okay,
maybe
it
just
needed
a
little
bit
more
time.
So
now
I
am
getting
the
code
fix
to
apply
var
instead
of
the
explicit
type
and
I
could
do
this.
In
my
whole
document
or
I
could
just
hit
ctrl
K
D
again,
because
I
know
it's
now
being
picked
up
as
I
under
those
code
style
rules.
A
Okay,
so
that
isn't
elekid
combined
with
editor
config,
now
see
you
thought
I
was
making
a
statement
about
using
VAR
or
explicit
types,
but
now
we're
just
back
to
using
a
bar,
so
I
am
completely
neutral
in
that
argument,
we're
not
starting
out
here.
This
is
the
wor
free
zone,
okay,
so
that
was
a
lot
of
content.
Let's
do
a
quick
recap
back
on
the
slides,
so
we'll
go
here.
A
Okay,
so
I
showed
off
new
keyboard
profiles,
several
refactorings
for
loop
de
for
each
and
fit
invert
if
ternary
conditional.
All
of
that
I
won't
read
through
all
of
them
again,
something
you
might
have
noticed
with
all
of
these
features
being
added
to
every
single
version,
even
minor
versions
of
Visual
Studio.
Is
that
there's
a
lot
of
them
first
off
and
we're
iterating
very
fast
and
I
can't
stress
this
enough.
A
A
lot
of
this
is
due
to
our
really
big
decision
of
reaaargh,
detecting
the
Rosslyn
compiler
that
we
first
shipped
back
in
Visual,
Studio
2015,
so
Rosslyn
was
our
c-sharp
and
visual
basic
compiler.
That
was
reacted
to
an
extendable
API
that
was
completely
focused
on
being
open
source
and
more
of
a
platform
for
a
community
to
plug
into
the
community.
Had
an
awesome
response
to
that.
I
know
the
merge
conflict
code
fix
is
definitely
contributed
by
the
community.
I
think
there
are
a
few
more
in
there,
but
we
just
had
a
really
incredible
response
there.
A
So
part
of
extending
Rozlyn
is
being
able
to
create
your
own
Rozlyn
analyzers.
So
I
just
want
to
take
you
through
really
quick.
What
that
looks
like
I
think
it's
so
important
that
people
sort
of
wrap
their
heads
around
what
exactly
creating
your
ROS,
your
own
Rozlyn
analyzer
means.
So
if
I
went
ahead
and
created
an
analyzer
code
fix
private
provider
I'm
only
getting
these
areas
because
I
haven't
hasn't
restored.
A
I
can
actually
launch
an
analyzer
project
and
in
doing
so
it
launches
another
version
of
Visual,
Studio
I'm,
not
sure
if
you
all
have
seen
this
before,
but
it's
very
meta,
so
you're
running
Visual
Studio
from
Visual
Studio.
So
sometimes
it
takes
a
little
bit
longer
to
startup,
but
this
version
of
Visual
Studio
is
being
launched
by
this
one.
A
A
Open
up
my
other
version,
there
we
go
and
now,
when
I
hit
the
control
dot
to
open
my
code
fix
it
actually
triggered
a
break
in
my
analyzer
project
in
Visual
Studio.
So
that's
sort
of
what
analyzer
development
implies.
It's
really
fun
to
do,
and
the
community
has
had
such
an
incredible
response
to
using
it.
A
A
So
you
can
see
in
my
solution
Explorer
that
I
actually
have
an
X
unit
project
rule
set.
That's
because
I
went
ahead
and
grabbed
the
nougat
reference.
That
applies
a
X
unit
analyzers.
So
these
are
all
of
the
rules
that
all
see
that
I'll
be
seen.
So
one
of
these
is,
for
example,
a
fact
methods
cannot
have
parameters.
So
what?
If
I
went
ahead
and
tried
to
woo?
Add
one,
so
you
can
immediately
see
that
I'm
getting
a
code
fix
that
says:
oh
hey,
if
you're
using.
A
If
you
want
to
use
a
parameter,
that
should
actually
be
an
X
unit
theory
so
that
can
apply
a
code
fix.
So,
let's
see
oh
I,
think
it's
just
prompting
me
to
so.
I
could
just
convert
that
to
a
theory
in
order
to
get
that
to
pass.
So
that's
those
code
fixes
and
analyzers
aren't
provided
by.
You
know
Microsoft.
That
was
that
was
our
tools
that
were
then
taken
by
the
community
and
they
ran
with
them,
and
it's
a
very
cool
library
to
check
out
okay.
A
During
talks
well,
first
I'll
skip
on
to
the
resources
so
that
you
guys
kind
of
have
a
launching
point
and
then
I'll
talk
about
Docs
at
the
end,
because
it's
the
last
resource
that
I
mentioned
so
all
of
the
tips
and
tricks
for
Visual
Studio.
That
I
just
showed
you
you
can.
A
I
used
live
unit
testing,
so
that
is
an
enterprise
only
feature
you
can
learn
more
about
it
at
a
Cayden.
Ms
slash
live
unit
testing,
so
I
know
a
lot
of
people
really
love
to
focus,
and
only
on
the
like
visual
studio
version,
15.8
brand-new
features,
so
I
went
ahead
and
made
a
like
one-page,
simple
tutorial
on
all
the
productivity.
15.8
features.
That's
in
my
repository.
It's
Kendra.
He
it's
on
github,
slash,
Kendra
Haven,
slash
productivity
15.8,
so
you
can
download
that
and
check
that
out.
It's
a
really
simple!
A
You
just
go
straight
through
the
the
file
and
enable
all
of
the
refactorings
that
I
explained
how
to
do
in
the
comments
on
all
of
the
methods.
So
the
last
thing
I
want
to
call
out
and
when
I
always
like
to
kind
of
kind
of
a
public
service
announcement
is
that
our
Doc's
are
open
source
and
you
can
submit
pull
requests
to
them
and
they're
wonderful
to
use
so
I'll
go
ahead
and
go
over
there
right
now.
So
this
is
our
Visual
Studio
2017
c-sharp
productivity
guide.
A
Always
you
can
change
your
theme
from
dark
to
light,
absolutely
wonderful.
I
mean
from
light
to
dark
and
always
leave
it
there
and
I
can
hit
this
edit
button,
and
this
will
bring
me
right
to
where
this
document
is
hosted
on
github
on
so
I
think
Myra
Wenzel
has
a
talk
later
and
during
dotnet
comp,
I
think
it's
probably
not
tomorrow,
but
the
next
day
and
I'm
guessing
she'll
be
talking
all
about
our
open
source
Docs
and
how
she
maintains
it.
A
She
does
a
ton
of
work
on
the
dotnet
Docs
and
it's
wonderful
to
work
with
her,
so
you
can
easily
navigate
to
where
the
doc
is
hosted
on
github
and
click
this
little
edit
button,
and
you
can
edit
the
doc
right
in
your
browser.
You
don't
even
need
to
actually
clean
the
repository
if
it's
a
small
change
and
then
you
can
propose
the
file
change
and
make
a
PR
request
right
in
your
browser.
It's
really
easy
to
do,
especially
for
Docs.
It's
also
kind
of
a
good.