►
Description
Join members from the .NET teams for our community standup covering great community contributions for Framework, .NET Core, Languages, CLI, MSBuild, and more.
A
A
A
A
A
A
Yeah,
that's
a
that's
a
bold
move,
given
that
we
started
2
minutes
late
already.
So
let's
start
with
something
quick
and
if
you
follow
a
block,
you
probably
have
seen
our
server
that
we
published
yesterday.
So
if
you
are
a
dotnet
developer,
which
probably
you
are,
would
be
my
guess
and
you're
both
in
desktop
applications,
then
you
should
fill
out
the
survey.
A
So
we
go
to
our
blog
and
the
survey
is
just
here's,
this
big
fat
link,
you
can
click
and
it
should
take
you
between
3
and
5
minutes
and
it's
a
relatively
quick
survey
for
us
to
figure
out
what
kind
of
applications
you
are
building,
what
your
pain
points
are
and
what
you
would
like
us
to
do.
Moving
forward
in
the
desktop
space.
So
just
a
quick
pitch
for
the
survey.
A
The
other
thing
I
would
like
to
talk
about
really
quick
is
as
well
I
published
a
post
yesterday
on
the
dotnet
standard
adoption.
So,
as
you
probably
know,
we
have
talked
about
that
in
Senate
for
quite
what
did
the
two
years?
No
three
years
now,
and
so
this
is
basically
a
blog
post.
That
summarizes
where
we
are
with
adoption
on
new
georg.
So
the
quick
summary
is
about
47%
of
the
top
1,000
NuGet
packages,
excluding
Microsoft
and
dotnet
itself,
because
clearly
we
are
supporting
and
Senate
already.
A
A
So
if
you
look
at
the
trend
lines
which
are
generously
added,
you
know,
then
you
can
extrapolate
that
I,
don't
know
by
2022
or
something
we
would
have
a
hundred
percent
utilization,
but
you
probably
never
get
because
on
every
package
is
still
maintained,
but
the
idea
is
that
we
would
hopefully
get
to
a
much
broader
support
for
that
net
centered.
But
this
is
totally
great,
and
the
blog
post
also
reiterates
what
you
should
do,
because
there
still
is
some
confusion.
Given
that
we're
about
to
ship
dotnet
sent
a
2.1.
A
So
in
case
you
wonder
which
version
to
target
you
should
still
target
2.0
for
the
most
part,
because
it
gives
you
the
most
reach
and
most
of
the
API
additions
that
we
added
not
less
than
a
2.1.
You
probably
don't
need
if
you
need
them,
then
by
all
means
target
dot
and
sender
to
one,
but
you
probably
want
to
do-
will
target
at
least
for
an
ascender
tool
as
well,
so
that
you
could
still
support
on
all
the
platforms,
particularly
donut
framework,
so
that
one
is
also
done
and
now
I.
A
A
So
that's
a
question
that
I
think
comes
up
quite
a
bit,
so
usually
what
we
have
of
all
platforms
story,
my
donut
framework
and
net
core
there's
support
policies
with
version
numbers
right
and
usually
at
some
point,
all
the
versions
drop
out.
Don't
and
Senate
is
different
in
that
there's
no
implementation
for
us
to
support
I,
don't
and
Senate
is
just
an
API
said
and
so
supporting
a
smaller
API
said
is
obviously
free
of
work
for
us
right.
So
in
that
sense
we
do
support
it.
Yeah.
B
A
Basically,
we
will
always
support
all
the
way
back
to
door
and
senate
1.0.
The
question
was:
should
you
target
1.0,
and
the
answer
usually
is
no,
because
the
amount
of
the
platforms
that
you
would
additionally
reach
a
standard
1.0
over,
let's
say
2.0,
probably
doesn't
make
a
difference
in
your
day-to-day
life
unless
you're
still
rocking
a
windows
phone
or
something
it
probably
doesn't
matter.
So
in
that
sense,
you're,
probably
better
off
targeting
tool,
because
you
get
more
api's,
but
it
is
fully
supported,
always
remain
supported
and
that's
true
for
future
versions
as
well.
C
C
B
B
A
B
C
Was
successful
in
doing
that
yeah,
so
there's
definitely
a
lot
to
cover
here.
I
think
the
the
very
high
level
piece
is
like
it's
pretty
much
at
the
very,
very
top,
the
the
feature
from
like
our
Donna
coreos
perspective
and
like
the
compilers
perspective
or
like
the
languages
perspective,
it's
pretty
much
locked
down
at
this
point.
A
C
C
That's
yeah
well
and
that's
what
it
is
right
like
it's,
but
the
thing
is
it
was
implicit
right.
It
was
either
string
or
null
every
single
time,
and
that's
the
sort
of
thing
that
you
know
in
isolation
with
very
small
snippets
of
code.
You
would
understand
to
account
for
it
every
single
time
and
it
was
probably
okay,
but
over
the
course
of
you
know
a
code
base
with
a
million
lines
of
code,
there's
a
very
strong
chance
that
you
absolutely
did
not
account
for
every
single
one
of
those
times.
Yeah.
C
Or
million
times
yeah
like
it,
we
we
fixed
numerous,
no
reference
exceptions
in
the
Rosalind
codebase
in
core
FX
and
our
compilers.
Like
you
know,
we
still
do
it
a
lot
and
like
we
like
to
think
that
you
know
we
have
a
pretty
good
handle
on
the
languages
that
we
build
and
understand
when
things
could
be
knoll
or
not,
but
we
even
still
miss
it,
and
so,
like
I
mean
everybody
misses
them
all
the
time.
C
So
so
the
whole
point
is
very
explicitly
distinguishing
between
a
reference
type
that
could
be
null
and
a
reference
type
that
isn't
null
that
is
or
a
non
knowable
reference
type
as
it's
called.
So
some
people
in
the
community
who've
been
like
following
this
stuff,
have
been
saying:
oh,
it
should
be
called
non
knowable
reference
type,
so
is
which
is
kind.
D
Of
evening
is
just
like
the
naming
we
were
so
far
down
the
rabbit
hole
with
that
name
that
there,
but
by
the
time
it
was
clear
that
that
that
we
would
have
that
we
would
have
spent
more
time
on
the
name
which
it
was.
It
was
an
idea.
It
was
an
experiment.
It
got
rolling
at
avalanche,
we've
got
it
it's
a
huge
feature:
we're
really
excited
about
it,
but
yeah
that
the
name
is
very
imperfect.
Something
about
that.
You
know
yeah.
C
And
so
there's
there's
a
whole
lot
that
sort
of
falls
out
from
from
that
being
able
to
distinguish
in
the
compiler
between
something
that
could
be
Nolen,
something
that
is
not
at
all
and
this
this
post
kind
of
walks
through
all
of
that
and
like
I,
mean
there's,
there's
the
really
basic
stuff
which
I
didn't
cover
because
other
blog
post
have
where
you
know.
If
you
have
a
string
as
input,
and
you
know
you
dot
into
it,
it's
fine.
C
But
if
you
have
a
string
question
mark
as
input
and
you
dot
into
it,
then
could
the
compiler
emits
a
warning,
saying:
hey
this
isn't
safe.
You
should
consider
checking
for
null
first
and
that's
like
some
really
basic
stuff,
but
then
the
scenarios
can
get
a
lot
more
intricate,
like
you
know,
you
may
want
to
write
generic
code
where
you
want
to.
You
know,
enforce
that
the
types
that
you're
substituting
with
are
non
null
there
was
up
until
you
know
the
preview
seven
released.
C
B
C
D
One
thing
we
should
mention
is
that
in
the
midst
of
these
previews,
the
compiler
team
and
the
work
that's
been
done
on,
the
design
of
this
feature
is
way
out
in
front
of
visual
studios.
So
basically
it
got
done
without
much
concern
for
visual
studio
and
they
are
right
now
working
to
implement
the
support
you
want
so
especially
in
the
previews,
and
even
if
we
wind
up
with
in
16.3,
not
being
a
hundred
percent
sure
100
percent,
there
there's
definitely
work
going
on
to
support
things
like,
for
example,
I.
B
D
So
just
it
I
want
to
just
clarify
something
on
that.
So
the
nullable
flag
is
a
it's
just
a
boolean
flag.
You
know
you're
either
going
to
be
in
a
not
null.
This
is
expected
to
be
not
null,
or
this
is
expected
to
perhaps
take
a
null,
which
is
very,
very
black-and-white,
and
it
turns
out
that
there's
a
boatload
of
gray
areas
and
some
of
those
we
found
when
we
were
working
on
core
effects
and
trying
to
implement.
C
It
just
turns
out
that
the
c-sharp
language
is
really
complicated.
That's
that's
really
what
it
boiled.
That's
really
what
it
boils
down
to
like
I
mean
there
are
things
that
you
can
express,
c-sharp
and
patterns
that
exist
that,
like
they
like
you,
you
can't
lift
like
a
type
system
sort
of
safety
mechanism.
C
Just
onto
these
patterns,
the
c-sharp
language
would
have
to
be
far
different
to
actually
support
that
sort
of
stuff,
and
so
that's
just
sort
of
a
reality
of
the
situation,
and
so
there
are
many
patterns
where,
like
you
know,
you
want
to
associate
like,
for
example,
string
dot
is
null
or
empty.
If
that,
if
that
fails,
the
check
right,
like
you
know,
if
it
returns
false,
then
you
know
oh
well,
it
wasn't
Knoller
empty,
so
I
can
probably
proceed,
but
that's
just
some
method
call
that
returns
some
value,
that
that
really
says
nothing
about.
C
A
There's
basically,
if
you
think
of
it,
what
the
compiler
does
right,
there's
a
flow
analysis
portion
to
the
compiler
where,
when
you
say,
if
X
is
not
now,
then
do
something
and
then
of
course
you
want
the
compiler
to
understand
that
under
the
if
the
value
is
not
no
because
you
rolled
it,
this
way
right.
There's.
B
A
Sure
to
add,
like
one
option,
would
have
been
that
the
compiler
special
cases
all
of
those
framework
methods,
but
that
doesn't
scale
and
also
doesn't
allow
us
to
include
third-party
libraries
right.
So
the
idea
was,
how
can
we?
How
can
we
have
a
type
system?
That's
expressive
enough
that
basically,
third
parties
can
encode
their
patterns
as
well
as
the
framer
can,
and
so
the
and
basically
that's
where
the
custom
attributes
came
in
right.
We
wanted
more
control
over.
D
B
C
D
C
D
I
agree
with
that,
but
in
some
companies
you've
got
people
that
are
doing
day-to-day
code,
and
yet
people
are
working
on
libraries
and,
if
you're,
working
on
day
to
day
code
on
that
day
that
you're
just
writing
your
normal
code.
This
is
this.
You
don't
have
to
worry
about
this
one
and
the
reason
I
want
to
call
that
out
is
because
it
is.
It
is
a
a
big
feature
to
get
your
head
around,
but
the
attributes
can
come
later.
You
don't
have
to
jump
in
immediately
and
start
worrying
about
what
the
attributes
are.
D
B
D
C
We're
like
you,
know,
oh,
why
did
I
get
another
warning
by
fixing
this
one
warning,
like
you
know
like
if
you
have
an
interface
and
an
implementation
mismatch,
and
then
you
have
something
in
the
body
of
one
of
those
implementations
and
then
you
fix
stuff
up
so
that,
like
you
know
it
conforms
to.
However,
you
want
it,
but
then
that
now
mismatches
between
the
interface
definition,
you
fix
the
warning,
but
you
injured
new
warning
as
a
result
of
fixing
it
and
that's
not
like
a
bad
thing
right.
C
C
Right
that
is
part
of
the
feature,
and
but
that's
why
it's
it's
I
mean
there.
The
I
think
it's
good
to
be
honest
about
the
fact
that
it's
difficult
to
like
it
is
a
challenging
feature.
Yeah
just
similar
to
how
like
async,
is
challenging
right,
like
you
know,
it's
it's
sort
of
impossible
to
do
these
sorts
of
things
and
not
think
about
it.
But
you
know
all
of
a
sudden.
You
don't
have
no
reference.
Exceptions.
Unexpectedly
is
a
big
deal.
Yeah.
D
So
we
talked
a
lot
about
just
that
that
aspect,
which
is
super
important,
but
I'm,
really
excited
that
big
code
bases
in
particular
will
be
able
to
express
internally
what
is
expected
on
a
very,
very
regular
basis.
So
all
of
the
reference
types
will
be
making
a
statement
about
their
null
ability
all
the
time.
That's.
D
A
A
There's
something
I
want
to
talk
about
for
a
moment
like
so
the
first
blog
post
talks
a
lot
about
what,
basically,
you
can
know
do
with
the
feature,
but
the
one
thing
that
we
should
also
call
out
is
what
we
have
them
with
the
feature
ourselves.
So
by
the
time
doesn't
quarter
your
ships,
not
all
of
dotnet
core
will
be
annotated,
in
fact,
not
even
all
of
corvex.
Your.
A
B
A
A
A
It's
a
lot,
and
so
basically
what
we
have
is
we
literally
review
to
every
single
API
and
if
we
have
in
the
framework
and
what
you
just
said
like
it's
the
first
time
we
can
actually
Express
malleability
at
the
API
layer,
and
once
you
do
that,
you
realize
how
inconsistent
the
API
is
are
so,
for
example,
in
reflection.
There
is
plenty
of
methods
that
accept
arrays.
A
Where
we
said
all
the
array
can
be:
no,
that's
fine
and
it
just
means
empty
right
versus
all
the
other
parts
of
the
BC
I'll
usually
say
we
talk
about
collections
like
I,
new
mobile
or
arrays
null
is
London
supported,
available
and
equal
events.
Some
methods
return
arrays.
Sometimes
we
return
empty
array.
Sometimes
we
return
null
arrays
right
and
you
realize
that
if
you
do
that,
like
E,
it's
not
so
much
the
fact
that
people
get
my
reference,
exceptions
is
also
the
federal
people
cannot
really
reason
about
what
what
you
know.
What
do
you
mean?
A
You
know
what
the
semantics
are,
what
you
expect
to
have
right
and
so
I
think
this
is
one
of
the
areas
where
I'm
actually
kind
of
excited
that
we
can
now
talk
about
null
ability
and
null
values
in
as
part
of
the
API
review,
but
it
also
means
you
know.
Phillip
has
this
little
section
here
when
I
want
to
quickly
talk
about
this.
C
And
this
is
also
somewhat
like.
We
don't
have
like
an
official
policy
document
as
far
as
like
how
we're
doing
it,
but
this
is
sort
of
the
way
that
we're
thinking
about
it
is
like
once
they're
added.
They
are
officially
part
of
the
API
and
we
are
being
very
careful
about
changing
them.
So
like
we'd,
basically
that
that's
an
offensive
way
of
saying
we
try
to
get
it
right,
the
first
time
so
that
we
don't
have
to
ever
change
it.
D
A
Don't
wanna
meet
here
on
this,
like
even
when
dotnet
core
300
ships
stable
the
annotations,
are
still
considered
preview,
probably
even
post,
5
or
because
we'd
be
back
between
300
300
and
three
one
will
only
have
20%
of
the
core
FX
API
sign,
rotated
right
and
then
in
five
four.
We
hope
that
we
do
the
the
rest
of
koreff
X.
A
This
still
probably
doesn't
include
you
know:
winforms
WPF,
asp
net
right
so
realistically,
until
the
entirety
of
dotnet
is
annotated,
it
will
probably
take
us
probably
until
dotnet
6
will
be
right,
I
guess
or
something
like
that
right,
because
it's
just
enormous
number
of
API
is
right,
but,
like
I,
think
the
core
of
X
AP
has
a
probably
stabilized
in
the
5
hole
time
frame.
So
I
really
hope
that
we
don't
have
to
do
make
breaking
changes
post.
A
A
A
A
Over-Riders
will
not
potentially
get
a
warning
that
says
you're
supposed
to
return
it
or
not
value,
but
now
the
questions
is
that
feature
helpful,
considering
that
we
already
know,
even
in
the
framework
of
some
cases
where
our
implementations
return
now,
and
so
we
said,
ok,
we
probably
model
reality
rather
than
the
intention,
meaning.
Okay,
we
mark
the
API
is
returning
a
nullable
string,
because
that's
what
a
significant
amount
of
implementations
do
today
and
so,
but
that's
an
editorial
opinion
right.
B
B
D
Then,
if
somebody
returned
an
awl
and
gave
them
a
null,
they
would
get
a
no
reference
exception,
because
just
to
remind
folks
is,
this
is
not
a
runtime
feature.
This
is
a
compile
time
feature
that
we're
doing
everything
we
can
and
I
think
we're
gonna
hit
a
really
high
percentage
yeah,
but
they're
still
gonna
be
problems,
and
you
would
just
be
setting
people
up
for
failure.
D
A
Spent
out
of
time
on
it
and
like
we
also
talked
to
the
jet
prints,
guys
who
implemented
malleability
on
there
and
way
before
we
had
an
hour
and
so
they're,
basically
like
the
resharper,
offering
has
effectively
a
bunch
of
sidecar
files
where
they
imitated
the
framework
or
their
understanding
of
the
framework,
and
they
probably
would
some
iil
analysis
tool
that
generates
that
and
actually
open
sourced
them.
So
they
actually
under
jetbrains
slash
annotations
on
github,
and
so
we
talked
to
them
and
we
actually
thought
about.
A
A
So
we
had
to
do
it
manually
anyway
and
then
same
thing
on
our
end,
we
originally
actually
thought
about.
Maybe
we
down
to
the
implementation.
Maybe
we
just
do
the
API
service
like
the
ref
assemblies,
and
then
we
said
well.
How
do
we
know
that
they
are
right?
We
think
they
are
returning
or
not,
but
we
actually
don't
know,
and
so
we
basically
said
no,
let's
actually
do
it
from
the
implementation
and
from
first
principles.
A
Let's
get
our
code
base
to
actually
use
malleable
in
the
implementation,
with
the
compiler
actually
validates
that
our
statements
are
correct
and
then
we
bubbled
it
up
into
the
API
surface
right
and
once
you
do
that.
Well
that
really
you
really
give
up
an
automation.
It's
just
a
manual
process,
yeah.
D
A
D
D
That's
a
good
yeah
mark.
We're
sad
too
mark
said
on
the
stream
that
the
2-storey
thing
makes
him
a
little
sad.
It
makes
us
a
little
sad.
It
also
reminds
us
of
if
sort
of
the
rails
been
working
inside
of
so
we
have
this
fantastic
platform.
That's
been
going
for
20
years
and
has
evolved
in
some
really
really
positive
ways,
but
at
the
same
time,
and
because
of
that,
we
have
to
respect
this
prior
art
a
very
deep
level
and
that's.
B
D
B
A
Then
how
do
people
ever
adopt
this
feature
right
and
so
there's
a
difference
between
a
v1
and
a
you
know:
B
12
or
whatever
right?
No,
you
controversion
numbers
and
typescript
had
some
prior
art
where
they
did
the
same
thing
kind
of
what
we
did
except
they
did
it
sooner
right,
but
they
ship
versions
of
types
can
provide
a
novel
feature
and
then
at
some
point
is
that
okay,
we
have
this
feature
now
and
yep.
A
C
A
Our
end,
we
said
it's,
it's
kind
of
the
nature
of
the
feature
we'll
be
breaking
if
you
opt
into
this,
but
we
it's
very
clear
that
we
have
to
model
a
world
where
part
of
your
process
is
running
with
a
notations
part
of
the
process
of
running
without
any
notations,
and
so
you
have
libraries
that
you
have
to
mix
and
match
right.
If
you
go
down
that
path,
then
you
kind
of
land
in
the
world
where
we
are
today
where
there
are
warnings
and
there
ways
to
suppress
them,
and
you
basically
think
about
and.
D
D
A
D
D
C
C
We
think
this
is
a
good
enough
time
for
library
developers,
especially
to
start
at
least
trying
to
adopt
the
feature
and
if
it,
because
if
it's
too
difficult
for
them,
give
us
that
feedback
and,
like
sort
of
say,
like
you
know,
hey
I'm
I'm,
like
I,
can
imagine
a
scenario
where,
like
you
know,
say,
system,
dot
link
is
not
annotated
right
now
yet,
and
they
may
rely
on
that.
So
heavily
that
they'll
say:
hey
I
really
want
this
thing
to
be
annotated
before
I
can
proceed.
C
A
B
C
It's
not
considered
supportive
and
that's
because
there's
lower
first
of
all,
speaking
of
nullable
you're
not
going
to
get
any
of
the
knowable
annotations,
because
this
just
don't
exist
in
that
API
set.
There
are
more
deeper
issues,
though
so
like.
If
you
want
to
write
code
that
uses
async
streams,
it's
not
going
to
work
because
the
types
are
not
there.
If
you
want
to
use
range
in
index
at
all
and
c-sharp
bait,
the
types
are
not
there.
C
That's
not
going
to
work,
and
if
you
want
to
use
default
interface
members,
it's
just
going
to
fail
completely,
because
the
the
runtime,
like
you
know,
say,
nest,
standard,
Oh,
sort
of
implies.
This
code
can
work
on
da
net
framework,
for
example.
Well,
don''t
framework
does
not
know
what
default
implementations
for
interfaces
are
at
runtime,
so
it'll
just
fail,
and
so
like
that's
sort
of
like
this
weird
subset
of
c-sharp
bait.
That's
really
accessible
at
that
point,
and
so
we
kind
of
want
to
make
the
lines
pretty
clear
about
what
is
you
know?
C
What
is
where
is
c-sharp
bait
like
fully
supported
to
run,
and
where
is
it
kind
of
you
know
up
the
guardrails
and
if
you
want
to
go
off
those
guardrails
like
we're,
not
gonna
get
in
your
way.
Like
you
know,
you
can
set
that
Lange
version
to
eight
and
you
can
deal
with
some
stuff,
that's
unavailable,
and
if
that's
fine
for
you,
then
that's
fine,
but
so.
A
Gives
you
a
clear
error
that
oh
you're
trying
to
use
the
range
syntax
I
can't
find
the
range
type
and
you
basically,
the
compilation,
write
similar
different
interface
methods
is
not
that
at
runtime,
the
runtime
just
crashes
with
you
know
an
execution
engine
exception.
A
thing
like
that.
It's
just
that
the
compiler
will
refuse
to
let
you
define
them,
because
the
compiler
says
I.
Can't
I
can't
know
that
the
runtime
you're
running
on
actor
supports.
Do
this
and.
C
A
I
mean
this
I
mean
there's
always
cases
where
it
gets
interesting,
but
I
think
in
practice
like
see
the
way
you
should
think
of
seizure
bait
I
think
is
it's
supported
a
lot
net
cost
vo
support
in
standard
2.1
and
then
some
similar
framework
and
c-sharp
right.
If
you
upgrade
the
latest
version
of
Visual
Studio
you
take,
you
always
got
the
latest
version
of
c-sharp.
We
have
stopped
doing
that
because
now
the
the
if
the
feature
gap
is
basically
becoming
bigger
and
bigger
right.
A
We
already
announced
it
would
only
add
new
features
and
new
types
torrent
framework.
So
there's
no
point
in
giving
you
the
latest
version
of
c-sharp.
Now,
if
you
really
force
it,
if
you
said
in
the
project
file,
things
would
work
fine
for
the
things
that
do
work
for
and
for
the
things
that
don't
you
just
get
a
compile,
error
and
I.
Think
that's!
That's
that's
effectively
the
scenario
you
are
in
and
as
a
dotnet
standard
library.
A
Also,
yes,
why
we
offer
you're
kind
of
used
to
the
idea
that
not
every
type
is
supported
everywhere,
and
you
have
to
think
about
that
and
that's
just
yet
another
thing
that
you
have
to
basically
make
part
of
your
I
guess:
architecture.
When
you
decide
which
platforms
you
want
to
support
right,
yeah.
B
D
Think
that
you
mentioned
one,
that's
super
important,
which
is
default
interface
method,
so,
if
you're
still
supporting
anything
other
than
the
the
latest,
then
default
interface
methods
run
into
a
problem.
They're
not
supported
yet
VB
they're
not
supported
in
anything
on
framework
they're,
not
supported
in
lower
versions
of
c-sharp,
and
so
you
can
run
into
problems
pretty
quickly.
D
It's
going
to
be
a
great
feature
as
it
rolls
in,
and
everything
supports
it,
but
that's
a
feature:
that's
gonna
have
a
bit
of
a
of
a
ramp
up
so
that
the
things
you're
targeting
who's
going
to
implement
your
interfaces
is
also
going
to
be
able
to
uptake
that
feature.
Now
we
have
to
put
it
in
to
start
that
process,
but
do
be
cautious
in
making
sure
that
you
know
what
you're,
targeting
in
terms
of
language,
in
particular
on
default
interface
methods,
so
yeah
make
sense.
D
A
One
thing,
I
would
say
is
like
nothing
really
has
changed
from
the
language
integration
into
the
frameworks.
It
was
always
been
this
way
that
you
version
of
the
language
metric
for
a
new
forever
functionality
and,
depending
on
what
your
target
you
may
or
may
not
get
the
feature,
and
the
only
thing
that
is
no
different
is
that
we
explicitly
state
that
certain
things
don't
go
back
to
dotnet
framework
right
and
that's
that's
realistically.
The
only
thing
that
has
changed
like
implementation,
wise,
the
compiler
works
the
same
way
as
before,
and
it
so.
C
There
was
also
a
blog
post
written
about
that
earlier
this
year
by
Scott
was
at
Donna
quarters
the
future
of
dotnet.
Yes,
where
it
kind
of
lays
that
out
very
clearly
I
recommend
anyone
is
sort
of
confused
about
that
sort
of
thing
and
search
for
that
blog
post
and
read
it.
You
know
I
think
the
summary
states
it
best
where
it
says
new
applications
should
be
built
on
Donna,
core
Donna
core
is
where
future
investments
and
done
it
will
happen.
Existing
applications
are
safe
to
remain
undaunted
framework,
which
will
be
supported.
C
This
is
where
the
new
stuff
is
going,
and
you
know,
there's
there's
gonna
be
perhaps
a
little
bit
of
lag
time
because
of
the
reality
of
where
run
times
have
to
start
sorry,
the
reality
of
where
libraries
have
to
work,
but
you
know
eventually
say
with
Noble
or
say
you
want
to
include
default
interface
members
for
some
stuff,
you're,
gonna,
sort
of
sort
of
have
to
draw
a
line
in
the
sand
and
be
like
all
right.
Well,
you
know
every
past
version,
it
all
works.
C
D
D
C
C
C
Bt
yeah,
but
as
far
as
dims
default
interface
members
go
like
similar,
similar
to
VB
like
it's.
It's
there,
it's
stable.
We,
like
you
know
we
it's
it's
a
major
runtime
concept
that
we
just
simply
have
to
support,
so
you
know
we're
supporting
it,
but
we're
holding
off
on
just
jamming
it
in
and
throwing
it
out
there.
You
know,
because
we
don't
want
to
ship
something
that
you
know.
Oh,
there
was
a
saddlebag
oops.
D
I
got
a
couple
things
I
want
to
touch
on
really
quick,
one
of
which
it's
too
bad
rich,
wasn't
here,
because
he
actually
broke
himself
with
this
issue.
So
I
want
to
talk
about
it,
so
you
don't
break
yourself.
So,
if
you're
working
with
a
visual
studio
16.3,
which
is
currently
the
preview
8
that
we're
just
getting
out,
then
we're
changing
the
way
the
Installer
works.
D
Some
of
you
may
know
that
we
have
been
for
reasons
that
we've
changed
our
mind
on
we've
been
leaving
SDKs
and
runtimes
on
machines,
and
we've
decided
that
visual
studio
should
no
longer
do
that,
because
it's
making
a
mess
of
people's
machines,
and
we
don't
have
a
good
way
to
clean
that
up
other
than
a
lot
of
work
in
add/remove
programs.
So
are
you
going
to
show
people
how
many
are
on
your
machine?
I.
A
D
C
D
D
2.2
will
remain
an
optional
component,
not
checked,
but
2.1
will
be
checked
in
the
future,
so
you'll
get
it
by
default,
since
it's
a
long-term
support
version,
but
for
preview
8,
it's
not
if
you
want
to
don't
want
a
2.2,
go
into
individual
components
and
check
it,
and
so
at
the
moment,
there's
no
entry
in
add
or
remove
programs
which
has
a
new
name
and
what's
the
new
apps
and
features
is
that
the
new
name?
It's.
D
Arp
ARP,
at
any
rate,
that's
there's
not
going
to
be
an
entry,
so
just
warning
on
that:
a
preview
8i.
This
is
totally
cutting-edge.
We're
having
a
meeting
this
afternoon
to
finalize
I
sort
of
expect
it
to
go
back
into
a
term
if
programs
as
a
dummy
entry,
so
that
you
just
know
it's
on
your
machine,
but
since
it
has
to
be
uninstalled
or
repaired
through
Visual
Studio,
then
it's
just
it's
not
going
to
really
be
an
actionable
thing
independently.
If
it
goes
on
through
Visual
Studio.
D
The
good
side
of
that
is,
you
won't
break
your
your
bill.
You
won't
break
your
visual
studio
installation
easily,
previously
you're
going
to
add,
remove
programs
and
easily
break
Visual
Studio
regardless.
If
your
SDK
breaks
Visual
Studio,
if
you
think
the
problem
is
you
don't
have
the
dotnet
chorus,
D
K
anymore,
the
visual
studio
wants
the
answer
to
that
is
always
to
repair
visual
studio.
So
that's
just
a
important
tip.
We
had
a
couple
people
here
that
made
a
mistake
on
that
they
made
a
big
boo-boo,
which
was
deleting
your
dotnet
folder.
D
B
A
D
40
to
45
that
you,
maybe
if
those
aren't
previews,
you
may
be
setting
a
record
because
in
general,
what
below
that,
if
people
haven't
been
using
previews
if
you're
using
internal
previews
it's
through
the
roof,
if
you're
using
only
public
previews,
then
that
might
be
why
you're
seeing
40
to
45.
But,
yes,
that's
the
problem
and
I
have
something
for
you
in
just
a
second.
So
we
don't
want
to
see
45
copies
of
the
SDK
on
your
machine
of
which
one
is
probably
being
used.
So
we
have
been,
you
know
very
frequently.
D
Every
quarter
we've
been
putting
a
new
SDK
on
your
machine,
we're
sorry.
So
the
next
thing
is
that
we're
going
to
help
you
clean
that
up
that
we
have
a
tool
that
will
appear
on
the
main
major
net
pages.
So
you
go
and
you
say
net
and
you
would
be
downloading
we're
going
to
have
it
a
link
there
to
a
tool
to
help
you
clean
up
your
machine
now,
I
have
to
tell
you
this.
This
is
a
pretty
like
it.
You're
gonna
have
lots
of
switches
and
dials.
D
It's
going
to
be
very
easy
to
mess
up
again.
Visual
studio
repair
will
fix
Visual
Studio
we're
going
to
have
a
Doc's
page
and
I
cannot
stress
enough.
If
you're
going
to
use
this
tool,
it
should
come
up
in
the
next
week
or
two.
If
you're
going
to
use
that
tool,
please
read
the
documentation.
You
can
really.
You
can
make
yourself
have
to
reinstall
it
DK's.
It's
not
going
to
shoot
a
foot
off.
That's
going
to
like
be
permanently
damaging.
It's
just
you're
gonna
have
to
repair
your
visual
studios
and
then
add
back
SDKs.
D
D
And
on
top
of
that,
it's
a
junk
I'm!
So
sorry,
okay!
So
anyway,
that's
going
to
come
out.
It's
gonna
I'm,
really
happy
with
what
we've
got
done
on
that
we.
So
if
you
have
40
to
45
right
now
on
your
machine,
I'd
suggest
you
not
spend
an
hour
and
have
removed
programs
individually
deleting
those
but
wait
until
you
get
that
tool
spend
a
little
bit
time
with
it.
D
I
think
it's
dotnet
cleanup
dotnet
clean
up.
It
is
not
a
tool
because
it
was
very
complicated
to
try
to
get
a
global
tool
running
without
taking
off
the
run
time
that
it
was
depending
on
and
so
that
just
turned
into
such
a
nightmare
that
we
decided
to
make
it
a
self-contained
application.
And
so,
if
you
absolutely
have
to
run
that
today,
it's
available
on
on
github
but
I'd
suggest
you
wait
till
we
finish
testing.
D
D
D
D
A
lot
of
people
are
really
happy.
We
I
I
started
telling
people
we
will.
We
should
do
this,
even
if
it's
only
in
this
building
and
of
course
we
would
never
do
it.
Only
for
the
people
in
this
building,
but
folks
that
are
running
nightly,
builds,
have
massive
numbers
and
space
time
trying
to
get
rid
of
yeah.
B
D
D
A
different
thing:
yeah
Global
JSON-
it's
been
in
actually
for
since
not
5,
but
it's
been
in
for
a
little
bit.
I
am
behind
so
I
think
we
may
have
mentioned
it,
but
we
didn't
go
into
the
the
core
features
of
it,
which
is
that
our
SDK
selection
is
a
little
bit
surprising
when
you
have
multiple
patches,
and
so
one
of
the
things
you'll
be
able
to
set
is
to
use
the
highest
patch.
So
if
you
want
a
particular
feature
band,
so
you
want
like
2.1
600.
D
If
you
want
to
be
in
that
band,
you
probably
want
to
run
the
heist
patch
in
that
band
and
you'll
now
be
able
to
do
that.
You'll
be
able
to
specify
an
exact
version,
you'll
be
able
to
specify
a
minimum
version,
and
this
is
super
important
for
folks
that
are
running
github
repos.
Previously
you
either
didn't
use
a
global
JSON
and
somebody
might
have
an
SDK
below
what
you
what
you
needed
to
run,
or
you
included
a
global
that
JSON,
and
you
were
saying
exactly
that.
D
One
which
makes
the
people
using
your
repo
have
to
have
exactly
that
one.
So
now
you'll
be
able
to
set
a
floor
to
say
that
I
want
anything
above
2.1
300.
If
that's
what
you
you
can
use
anything
above
that,
then
you
can
set
that
and
then
people
can
just
whatever's
on
the
machine.
It's
just
going
to
work.
You're
not
gonna
have
to
be
installing
SDKs
just
to
work
with
particular
repos
super
big
deal
for
the
way
that
repos
actually
work
in
the
real
world.
D
D
No,
there
is
a
possibility.
I
had
my
first
global
tool
was
actually
a
global
that
JSON
a
finder
in
reporter
and
then,
when
I
did,
that
I
ran
and
found
out
how
much
work
I
was
doing
on
parsing,
and
this
was
a
year
and
a
half
ago,
and
so
I
started
working
with
John
sakera
on
the
system
command
line.
That's
that
was
the
inspiration
for
system
command
line,
but
I
set
the
tool
aside.
D
I'm
I
have,
I
will
probably
revive
it
and
then
what
the
way
that
we
have
in
mind
doing,
that
is
that
the
the
cleanup
time
can
take
a
response
file,
and
so
we
would
have
a
separate
tool
that
gave
you
a
list
of
the
global
debt.
Jason
switch.
You
could
edit,
if
you
wanted
to,
you,
could
mess
with
if
you
wanted
to,
and
then
you
could
pass
that
as
a
response
file
into
the
cleanup
tool
and
that's
the
way
we've
decided
to
do
that
piping.
D
So
if
you
get
a
list
of
your
global
that
Jason's
by
hook
or
by
crook,
you
write
your
own
tool.
Somebody
else
beats
me
to
it
and
gets
a
global
tool.
Evaluator
out
there,
whenever
we
get
that
done,
if
you
have
a
response
file
with
the
individual
ones
that
you
want
to
leave
there,
then
it
will
take
the
response
file.
So
I'm
pretty
excited
we
added
that
feature,
and
that
was
because
a
system
command
line
made
it
easy.
D
We
actually
I
actually
was
looking
at
this
problem
and
I
asked
John
I
said:
hey
John,
do
we
do
responsible
yet,
and
he
goes
oh
yeah,
it
already
works
I'm
like
oh,
so
we
already
had
that
feature
without
even
trying.
So
that
was
pretty
exciting.
I
got
two
more
things.
Real,
quick.
The
easy
one
is
is
for
all
the
visual
basic
folks
out
there
hi
love
you
and
we
will.
D
The
my
feature
is
not
going
to
be
available
in
3.0
on
net
core,
so
dotnet
core
will
bring
forward
a
bunch
of
visual
basic
stuff
that
we've
been
doing
the
Visual
Basic
runtime,
but
we
ran
into
problems
extracting
WinForms
from
the
my
feature,
and
so
while
it
was
actually
there
in
preview,
7
we're
gonna
have
to
pull
it
out
in
preview.
9
and
my
will
come
back
in
probably
in
in
it's
gonna.
Come
in
a
future
version,
I
don't
want
to
promise
I'm
hoping
that's
gonna,
be
3
1.
So
we're
still
working
on
that,
though.
D
So
that's
a
visual
basic
thing
and
one
last
thing:
tools:
authors
for
all
the
tools.
Authors
out
there,
I
love,
you
too
I
mean
I'm
so
happy
that
we
have
the
uptake.
We
do
on
global
tools
and
we're
trying
to
just
start
calling
net
tools,
because
you
write
the
same
tool,
but
the
way
somebody
installs
it
on
their
machine
may
be
a
global
tool,
a
local
tool
or
a
tool
path
tool,
so
I'm
trying
to
start
calling
them
dotnet
tools.
D
If
you
have
a
dotnet
tool,
I
am
sad
to
say
that
the
that
they
are
normal
framework
dependent
applications
when
they
go
on
the
machine,
which
means
that
they're
going
to
follow
normal
role
forward.
Behavior,
there's
nothing
special
about
tools
and
what
that
means
is
that
they
will
not
roll
forward
across
a
major
version
boundary.
They
will
not
roll
forward
to
3.0.
So
if
somebody
takes
a
tool
that
targets
2.1
and
runs
it
on
a
machine
that
has
3.0
only
on
it
does
not
also
have
a
copy
of
2.1,
the
tool
will
fail.
D
So
what
you
need
to
know
about
this
is
a
yes.
This
is
coming
and
B.
There
are
three
solutions
to
this
problem
and
you'll
have
to
pick
the
one
that
works
best
for
you
one
is,
you
can
put
a
runtime
configure
the
roll
forward
option
and
that's
what
was
in
that
blog
post.
You
tried
to
bring
up
earlier.
It
has
a
roll
forward
option,
so
you
can
say
just
keep
rolling
forward.
D
I,
don't
care,
just
I
trust,
it's
going
to
work,
and
so
you
can
say
just
roll
forward
across
major
boundaries
and
then
it
will
work
on
three.
Oh
it
work
on
five.
Oh,
it
will
work
forever.
Assuming
that
nothing,
you
called
has
a
breaking
change.
The
second
thing
that
you
can
do
is
you
can
multi
target?
You
can
say
target
2.1
or
3.0.
That's
the
second
thing
you
can
do,
and
the
third
thing
you
can
do
is
to
document
that
you
require
the
older
runtime
on
on
the
computers
that
your
global
tool
is
running
on.
D
So
that's
coming.
I
am
very
sorry.
We
don't
have
a
blog
post
out
that
on
that
to
give
Moorehead
us
more
lead
time
to
people
to
get
there,
but
that
that
is
coming
in
the
future,
the
near
future
of
tools.
So
that's
that's!
What's
on
my
agenda
for
today,
I
wanted
to
get
those
out
there
they're
all
kind
of
like
not
perfect
things
work
to
do,
but
I
want
to
get
them
out
there.
Is
there
any
questions
on
any
of
that
I.
D
D
A
D
A
D
A
D
D
For
right
now,
we're
gonna
start
aiming
for
an
hour
where
last
time
we
thought
never
half
was
too
much
and
so
I
think
we
probably
should
be
looking
at
any
final
comments.
Anybody
have
pressing
and
it's
fun
to
do
this
by
the
way.
Thank
you
all
for
tuning
in
and
joining
us
because
we're
having
a
lot
of
fun
doing
this.
Okay.
D
A
Yeah
no
I
mean
it's
interesting
for
us
to
basically
talk
about
the
stuff
that
is
top
of
mind
because
that's
usually
the
stuff.
You
want
people
to
give
us
feedback
on
right.
So
that's
why
we
I
think
used
is
mostly
to
to
share
our
thoughts.
You
can
get
people
to
either
respond
to
block
polls,
take
surveys
or
tell
us
what.