Afrikaans
Akan
Albanian
Amharic
Arabic
Armenian
Azerbaijani
Basque
Belarusian
Bemba
Bengali
Bihari
Bosnian
Breton
Bulgarian
Cambodian
Catalan
Cebuano
Cherokee
Chichewa
Chinese (Simplified)
Chinese (Traditional)
Corsican
Croatian
Czech
Danish
Dutch
English
Esperanto
Estonian
Ewe
Faroese
Filipino
Finnish
French
Frisian
Ga
Galician
Georgian
German
Greek
Guarani
Gujarati
Haitian Creole
Hausa
Hawaiian
Hebrew
Hindi
Hmong
Hungarian
Icelandic
Igbo
Indonesian
Interlingua
Irish
Italian
Japanese
Javanese
Kannada
Kazakh
Kinyarwanda
Kirundi
Kongo
Korean
Krio (Sierra Leone)
Kurdish
Kurdish (Soranรฎ)
Kyrgyz
Laothian
Latin
Latvian
Lingala
Lithuanian
Lozi
Luganda
Luo
Luxembourgish
Macedonian
Malagasy
Malay
Malayalam
Maltese
Maori
Marathi
Mauritian Creole
Moldavian
Mongolian
Myanmar (Burmese)
Montenegrin
Nepali
Nigerian Pidgin
Northern Sotho
Norwegian
Norwegian (Nynorsk)
Occitan
Oriya
Oromo
Pashto
Persian
Polish
Portuguese (Brazil)
Portuguese (Portugal)
Punjabi
Quechua
Romanian
Romansh
Runyakitara
Russian
Samoan
Scots Gaelic
Serbian
Serbo-Croatian
Sesotho
Setswana
Seychellois Creole
Shona
Sindhi
Sinhalese
Slovak
Slovenian
Somali
Spanish (Latin American)
Sundanese
Swahili
Swedish
Tajik
Tamil
Tatar
Telugu
Thai
Tigrinya
Tonga
Tshiluba
Tumbuka
Turkish
Turkmen
Twi
Uighur
Ukrainian
Urdu
Uzbek
Vietnamese
Welsh
Wolof
Xhosa
Yiddish
Yoruba
Zulu
[Music]
hey everyone i'm leslie richardson from
the visual studio extensibility team and
welcome to this talk on what's new for
both existing and aspiring extension
developers and visual studio 2022
so vs 2022 is super exciting there are a
lot of major updates to it including
64-bit which can help improve
performance across the board and there
have never been more ways to customize
your ideal development environment with
additions such as color tabs or themes
or just all the new github integrations
than there have been in this version but
for a lot of people creating that ideal
development environment is not complete
without the extensions that they've come
to know and love and that's where you
all fit in as extension authors so the
goal for this talk is to share with you
some steps for how to successfully
migrate your extension to visual studio
2022 so that everyone can continue
taking advantage of all the awesome
productivity and customization add-ons
that your extension offers while also
introducing a new toolkit that can help
you write your extensions even faster
and easier than before so let's check it
out so migration is the first and
probably most important topic that we'll
be discussing today in order for your
extensions to continue being used in
visual studio 2022 you're gonna have to
follow a couple migration steps that
we're gonna demonstrate today
all right so i am currently in visual
studio 2022 and i've got this 2019
extension that i've written that i'd
like to migrate to vs 2022
and after doing all my modernization
updates so making sure that my.net
framework is still compatible with
visual studio 2022 as well as any other
package references we can get into the
core migration which comes down to
creating two
two separate v6s you want to create two
projects one that targets visual studio
2019 and lower and the other one that is
targeting visual studio 2022 and both of
these v6 projects are going to be tied
together by what's called a shared
project which allows us to share code
that's going to be similar between the
two versions and the reason why we are
setting up the extension in this way
when migrating is because we need to
address all of the breaking api changes
and interop assembly changes that have
happened in the transition to 2022 of
which there are a lot of especially with
the addition of 64-bit so in order to
make sure that
certain uh assembly references work in
one version but not on the other then we
can use the shared project setup to
differentiate between the two fairly
easily
so
i've got my 2019 targeting project and
the first thing that i'm going to do is
just add my shared project to the
solution
so create a new project
go into shared
i'm going to call mine add author
underscore shared
okay so there's my shared project of
course we need to include a reference to
that project in the 2019
project so let's go to reference
add that
so now the question becomes what goes in
this shared project so usually most of
your cs and res x files are fair game
anything you intend to share between
both versions of your extension so
specifically your commands your
tool windows that sort of thing and
that's what i'm going to add in mine
so as for what not to add to this shared
folder you don't want to add your vsct
file but you do want to make sure that
your build action under properties is
set to vsct compile
and
there you go and you want to make sure
that your include and b6 property is set
to false
and similarly you also don't want to
move your b6 manifest which we're going
to play around with in a second
so we've got the vs 2019 project set up
and we have the shared folder or the
shared project and now we're going to
add the vs 2022 project which i've
already set up so i'm going to add an
existing project and go find that
great so there is our vs 2022 project
and there's a couple things that we need
to address here in order to
actually get this extension to run
properly in bs2022 so the first being
let's add a reference to that shared
project like we did with
the 2019 one
so there it is
and then
we need to make sure that we have our
nuget packages updated specifically the
sdk and the build tools ones and you
want them to target a 17.0 version
of uh visual studio and this is what
will allow us to continue using the
extension libraries and apis and visual
studio 2022.
all right so from there we're going to
modify our v6 manifest i'm going to open
up the code version because we're going
to add
a different tag manually
so first and foremost make sure that
your installation target is set to
17.0 to 18.0
and then
inside your installation target we're
going to add a new tag called product
architecture so this is like the money
shot right here this is something that
you have to make sure that you have
otherwise your users won't be able to
install visual suit and won't be able to
install your extension in visual studio
2022 and we don't want that
so we're going to add 64 and this is
accounting for the fact that visual
studio is 64-bit therefore your
extension needs to be compatible with
64-bit bs
and also make sure you update your
prerequisites to
go to 17.0 to 18.0 as well
all right so from there we've updated
our manifest we've updated our nuget
packages and before you hit run stop do
not pass go do not collect 200 because
we need to address those breaking api
changes that have happened in that
transition and luckily even though
there's a lot of them we have provided a
lot of resources with the list of all
the different apis that have changed
have been broken or have been moved as
well as solutions for how to fix them
so in my case my issue is going to deal
with this dte and underscore dte
typecast failure so i bet it would be
addressed if i just change my namespace
to the latest envdte80
namespace instead
so going into my code specifically this
issue is going to take place
in
my
one of my shared files
you'll notice that i get an error but if
i'm looking at the visual studio 2019
version of this shared file it's not
giving me an error when i use this
definition but if i were to swap over to
vs 2022 then it is going to give me the
error so we can just fix this by
changing to enb dt 80.
and from there
we should be good to go and give this a
try and see if the extension has
successfully been migrated so i'm going
to set
that project as my startup
and hit run
so depending on the complexity or the
size of your extension you may have to
address a lot of breaking changes or you
might get lucky and not have to address
any
so keep in mind please double check them
either way just to make sure that it's
going to work right for all the users
okay so i've got this random project
open and this is a very basic extension
that is supposed to write my name as a
comment in
the doc of my choice so
i'm gonna go to edit that's a good sign
there's my command right there i'm gonna
add
my author name to the file
there we go so we successfully migrated
this extension
awesome so
uh basically the core in summary of
migrating consists of two separate v6
projects tied together by a shared
project make sure you update your
manifests especially that product
architecture tag that you'll need to
include for 64-bit and last but
certainly not least make sure that you
are addressing any breaking api changes
that might have occurred
all right so we just finished migrating
but i'm not as happy as i could be
because honestly the time it took me to
write that extension was a bit longer
than i expected because something as
seemingly simple as writing text to a
text buffer to a document turned out
it was actually really hard to find in a
document or online and then once i
finally did find that information
i
needed to learn up on several different
apis which took a long time
so if you've ever been in that situation
where it's taken you a long time just to
get started applying all of your great
extension ideas and implementing them
then we are addressing that by
introducing a new toolkit called the
visual studio community toolkit emphasis
on community here so this is a
completely open source community driven
project that has the goal of making
writing your extensions easier by
providing helpful templates helper
methods and api wrappers and my personal
favorite visual and textual intellisense
additions to a lot of the common apis
and we're also providing more
descriptive and accurate documentation
with more examples than ever
and also the end game of this toolkit is
to provide a smoother transition into
the out of process extensibility model
which is still a work in progress but is
coming very soon
and that model has the goal of also
making writing your extensions easier
while also making them more secure and
more reliable
so as an experiment let's try to write
that same extension using the community
toolkit in order to see the differences
all right so i'm back in vs 2022 and
i've already got my
project open that i want to use with the
community toolkit and i actually used
one of the
templates that this toolkit gave me
which provided me by default with a
commands folder and a my commands file
as well as a vsct file which is great so
if you want to get started using this
toolkit make sure that you have
this
extensions oh here we go extensibility
essentials 2022 pack installed so this
is a pack that consists of multiple
extensions such as insert guide and
image optimizer and just a lot of tools
that help expedite some of those
everyday extensibility writing tasks
that you might experience
so from there the first thing i'm going
to do is define where i'd like my
command to be placed by default it's set
in tools and you'll notice when i hover
over tools this is awesome you get a
visual representation and intellisense
of what that window looks like so it's
like a cheat sheet of here are all the
different possible locations where you
could place your extension in the tools
window so really great if you're not as
familiar with bs or you're not as
familiar with all the different ide
choices so i'm going to change mine to
edit because i'd like mine to go in the
edit window there it is
and again if we compare and contrast
we can go to that same location
and you'll see that this is a lot
less intuitive to understand and there's
a lot of ideas that look like this that
you may not really know what corresponds
to what off the top of your head and
require you to have a doc open at the
same time so
less ways
it gives you less of an opportunity to
experiment and just test the waters of
it
so we've got that in place and then i
think the most noticeable difference
with the toolkit comes when you open up
your command file by default this
is awesome it's only 11 lines versus if
you go into
your version of the extension that
doesn't use the toolkit
there is a lot more going on that you
need to consider addressing such as the
initialize async function or service
provider what is service provider i
don't know but you're gonna have to
learn up on it when you get started
writing your
extensions so if you want just a quick
way to put down all of your ideas in one
spot and just see your extension running
that much faster than having the toolkit
in place to define the stuff that's most
important to you
is great in this case the thing that's
most important to me is defining what my
command is supposed to do once it gets
triggered which is why execute async is
here by default
so i'd like to write that same comment
in this case my name to text buffer and
as i mentioned before we have a lot of
great documentation for this ongoing
toolkit project my personal favorite is
the tips and tricks section which has a
lot of very common scenarios that occur
when you're writing an extension that
you probably want to know about and i'm
going to copy paste
this top one
which will allow me to write
text to the active text view
so i'm going to add that in
and i'm going to change this to my name
and let's go ahead and hit run
okay so we're back with that same random
console application that i have and i'm
just gonna add my name to the top of it
so as you can see i now have the toolkit
version of that extension command
and there it is
see how much simpler that was that was
really quick just to put that basic idea
on paper and have it
out in the world in action like that so
if you want to take advantage of that
toolkit be sure to check out the
extensibility essentials extension
download it and experiment and also
because this is open source and
community driven share your feedback and
also get involved so if you've got ideas
that only your mind could come up with
the possibilities are endless and you
have the power to change it
and that concludes the talk on what's
new for extension developers and visual
studio 2022 we talked about migration so
if you haven't migrated your extension
already and want to learn more be sure
to check out the extension support link
we also talked about the toolkit to help
make writing your extensions easier
and if you want to learn more about how
to get started with that go to
v6cookbook.com
and last but not least as i mentioned
before that toolkit is going to be a
transition into the upcoming out of
process extensibility model designed to
let you write your extensions easier
help your extensions to be more reliable
and more secure so if you'd like to
learn more about that experiment with
the initial bits see samples and
honestly just see any more upcoming
announcements in the world of visual
studio extensibility be sure to check
out the vs extensibility repo and with
that thank you so much for watching and
thank you so much for providing all of
your awesome extensibility ideas to help
users be more productive across visual
studio and until next time happy coding
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.