StefanKert / BuildVision

A Visual Studio extension to visualize the building process.
MIT License
261 stars 43 forks source link

Moving to AsyncPackage #71

Closed StefanKert closed 4 years ago

StefanKert commented 5 years ago

Release Notes

Release 3.0.0 comes along with some major changes. Basically the whole code has been restructured to be easier to change in the future. Since VS2019 requiers the package to be loaded in an async way BuildVision is a AsyncPackage now and therefore fully supported in VS2019. Because of the fact that the latest supported version of AsyncPackage is VS2015 the support for VS2013 has been dropped.

IMPORTANT: The new version of BuildVision tracks some usage data as well as crashes to make the product even better in the future. If you want to disable telemetry just go to Options=>BuildVision=>GeneralSettings (or right click on the BuildVision and open All Settings..) and disable the option "Help improve BuildVision by providing anynonymous usage data and crash reports"

Features

jfevia commented 5 years ago

Hi @StefanKert,

First of all, great work with this extension! I have extensively recommended it to my colleagues :)

Our team is moving to VS 2019 and I was wondering what's the ETA for the release that is compatible with it.

StefanKert commented 5 years ago

Hi @jfevia ,

to be honest I can not give you a specific date right now because I do not have much time for OS stuff at the moment, but I am pretty confident that we will have a release in Q3.

The difficulty, as you may have noticed is that VS2019 kind of forces the support for AsyncPackage and to bring this into BuildVision I needed to change many things. Right now I am working on some minor issues with the latest bits, but it would be of great help if you and your team has some time to check it out and give me feedback on performance, handling and if you see any regressions from earlier versions ( new features are also welcome :), to have them on the roadmap for 3.1).

If you or anyone of your team has time the preview is hosted in the vsixgallery: http://vsixgallery.com/extension/837c3c3b-8382-4839-9c9a-807b758a929f/

This page should give you a good overview on how you can subscribe :). If you have troubles using it let me know.

Sorry for the unclear dates and timeframes here, but I´ll do my best to bring up a release that works asap :)

MagicAndre1981 commented 5 years ago

The difficulty, as you may have noticed is that VS2019 kind of forces the support for AsyncPackage and to bring this into BuildVision I needed to change many things.

in 16.1 Final this is configurable:

image

yannduran commented 5 years ago

@StefanKert, actually the minimal changes required to use an AsyncPackage are quite simple.

There's a couple of change to attributes in the package class etc.

The change to InitializeAsync may seem complex, but you can just await the method to switch to the UI thread, then leave the rest of your non-async code in that method as is, with no further changes.

So you'd be able to get a version in the marketplace with support for VS 2019 with very little effort, and no major changes required. Then you'd have time to continue to make the other changes you want at your leisure.

If what I'm talking about isn't clear, ping me and I'll try to explain it better. Or I could maybe do a pull request with the changes. I'm trying to send this comment in a rush, sorry.

MagicAndre1981 commented 5 years ago

I asked Mads Kristensen and he told me that IAsyncLoadablePackageInitialize which is used by this extension is still supported in VS2019, so using it can be also an option, because this keeps compatibility to VS2013.

yannduran commented 5 years ago

Yes, that's right, it's still supported. But that doesn't make it desirable. It's an old interface that was superseded by AsyncPackage.

If Stefan wants to keep support for VS 2013, then he can use it, but he said he had to make many changes, which was causing him delays in getting a VS 2019 version out. My suggestion was to make that be able to happen quicker.

@StefanKert I suggest making the small change I mentioned to the last released v2.x version and releasing it to the marketplace as v2.x+1, to allow all your loyal users be able to use it in VS 2019. You can then continue developing v3.0 at your leisure.

Actually what is the lowest version that you want to support Stefan?

StefanKert commented 5 years ago

Oh :) mea culpa!! Of course you mentioned that too :)! But actually @thoughengineer. Created a pull request for this which didn´t get merged :P #76 :)

yannduran commented 5 years ago

No problem, I was just teasing you! :-)

I'm currently busy creating a new extension called Start Page+, obviously to address the mess that MS made of the new modal Start Window. Did you ever see my Developer News extension?

Ext3h commented 5 years ago

There appears to go something haywire in BuildInformationProvider.Run for larger solutions. Namely, the frequent updates to the data grid are completely exhausting the time budget for the UI thread.

Solution with >100 projects -> 100% busy time for the UI thread, trying to figure out if anything needs to be resized, because each single RaiseBuildElapsedTimeChanged results in an individual event for the UI thread. 100 projects -> 400 layout updates / second.

Somehow a busy UI thread then prevents builds from actually starting, not entirely sure what that effect is to blame on though.

Janek91 commented 5 years ago

Maybe it would be good to limit amount of these events reaching UI thread using Reactive Extensions in the right place? This way UI still be updated, but less frequently.

d4e666 commented 4 years ago

when will the new version be available in the store? it's already 2020 and the latest "comment" is already over 6 months old

Janek91 commented 4 years ago

@StefanKert I'm happy to help if you'll just say what's left to get BuildVision 3 ready for release. I use the 3.0.0.99 version for quite a long time and it works fine and stable in VS2019.

StefanKert commented 4 years ago

Hi folks :)

first of all thanks for the feedback. I will merge this PR and try to release a version to the marketplace until the end of next week :)