Visual Assist support for Visual Studio 2022 Previews!

Visual Assist support for Visual Studio 2022 Previews!

There’s a lot of interest in the developer community about the new version of Visual Studio, which is in preview currently. This week we released Visual Assist 2021.3 (build 2420), and Visual Assist includes beta support for the Visual Studio 2022 Previews.

VAssistX menu open in the Visual Studio 2022 Extensions menu
Visual Assist 2021.3 running inside Visual Studio 2022 Preview 3

Visual Studio Preview

Visual Studio (VS) 2022’s main change—and it’s a significant one—is that it will become a 64-bit process. Since Visual Assist (VA or VAX) runs as a plugin, in-process, we needed to build a 64-bit version of our plugin DLL. Those who have upgraded 32-bit code to 64-bit code before know that, even in well-architected code, it takes some work even just to review code to ensure it is correct. In addition, the new version adds and modifies a number of APIs we rely on to interact with the IDE. Adapting to those was the most significant change for us.

We’ve tested fully against VS 2022 Preview 2, and in fact the installer says ‘Preview 2’. There are some known regressions:

  • VA Quick Info not appearing when triggered by keyboard in VS 2022 [case: 146063]
  • Source Links example plugin does not load in VS 2022 [case: 146012]
  • Changing from Cascadia to another font for italicized system symbols requires restart in VS 2022 [case: 145979]
  • plus a few others.

Visual Studio 2022 Preview 3 was released two days ago—overlapping timing with our release—and our regression tests are showing some failures. Currently we believe those are because of changed behaviour in a Visual Studio API which we use when verifying in-IDE behaviour (ie not an issue in VAX itself), but it is always possible that once that is resolved further test failures will need to be resolved. However, we believe the current build is well worth trying out on Preview 3 as well.

Performance

Many of our customers strain the Visual Studio IDE, with many plugins and SDKs installed. Both to help them, and because we believe it’s part of being a good member of the Visual Studio ecosystem where our plugin sits alongside others, last November we greatly reduced the in-process memory usage largely through (spoiler: the full blog is worth reading) use of memory-mapped files.

Now that Visual Studio 2022 is a 64-bit process, that work is not necessary for VS2022. For older versions of Visual Studio, those techniques are still used, so if you’re using VS 2019 or even VS 2005 with Visual Assist 2021.3, you’ll still benefit from the lighter memory impact within the IDE.

When we did that work, we also focused on performance to ensure that the changes to memory access had either zero or a positive impact. The blog notes that for heavy usage, we had equal performance; for small projects, VAX actually was a bit faster. Despite no longer needing the memory usage code we added, VS 2022 benefits from that performance work as well, plus some more work we’ve done while adding support. Since it’s a beta build, and Visual Studio itself is in preview, we do not have hard numbers. But a rough guideline is that an operation like Find References that previously may have taken (say) two minutes will now take about one minute twenty seconds, or about two thirds the time.

Overall

It’s historically been very important to us to have swift support for new versions of Visual Studio, and this work is our foundation for quickly officially supporting Visual Studio 2022 when it is officially released. While the main focus of this release was VS 2022 support, there are other changes as well in 2021.3, which we’ll document in the What’s New. We know we have many customers using older versions of Visual Studio, and as well as those improvements today you can look forward to further improvements focusing on other, non-VS areas as we switch back to a more normal focus in our next release.

We’re really happy to be able to ship beta support for the Visual Studio 2022 previews, and providing an even faster Visual Assist is a happy bonus. We’ll continue to work and look forward to shipping full support when Visual Studio publishes its final release.

Visual Assist 2021.3 is available for download on our website now, and will be on the Visual Studio Marketplace in a few days. Enjoy!

Visual Assist Build 2393 is Here!

We’re really making an effort to keep blogs more instructional or industry related, but man o’ man is this release worth a few lines. Our team has been working behind the scenes for much of the year on performance improvements. And sure, we could’ve just done a few things here and there over time to make it feel like we were consistently improving (which we are), but with this release we decided we were ready to go all out.

Essentially we parse all of your source code and store that information in a database. Of course the larger your code base, the larger the database. And this can bottleneck you pretty bad in Visual Studio. So we’ve moved a portion of the database out of process decreasing the available memory we consume inside of Visual Studio and increasing the available memory. Yes, this is an over simplification of what we’ve done and doesn’t do justice to our developers, but download the latest, give it a whirl and let us know what you think.

Of course we didn’t stop there. We’ve updated our code inspection tool, LLVM/Clang, to the latest and greatest. We also added Code Inspection for performance-inefficient-algorithm clang checker. And we added more suggestions for UE4 macros. You can check out our full release notes here and be sure to download. Remember, maintenance must be current as of 2020.10.28.

Whether you’ve been using Visual Assist for a while or you’re brand new, you’re going to notice a difference with this build. Happy Coding!

Visual Assist Build 2375

  • NEW Added Code Inspection for modernize-deprecrated-headers clang checker.
    • Some headers from C library were deprecated in C++ and are no longer welcome in C++ codebases. This check replaces C standard library headers with their C++ alternatives and removes redundant ones.
  • NEW Added MakeShared/MakeUnique Smart Suggestions for UE4 smart pointer initialization.
  • NEW Change Signature on UE4 RPC/BlueprintNative methods update the implementations.
  • NEW Reduced memory required in very large solutions.
    • You’re not the only one that’s noticed larger solutions causing memory exhaustion. We’re doing our part to reduce our memory consumption.
  • NEW Code Inspection engine updated to LLVM/Clang version 10.
    • Again, keeping up with the times and updating as we’re able. While this won’t impact you much today, this sets us up for more to come in the future.

Check out the full release notes and be sure to download. Remember, maintenance must be current as of 2020.05.09 

Visual Assist Build 2366 is Available!

Build 2366 is all about keeping the lights on and letting you code faster and more effectively. While the release includes tons of bug fixes, you’ll find that we’ve added a few new items as well. In keeping with the latest and greatest, we’ve updated to LLVM/Clang 9.0.1. Other notable items include per monitor DPI awareness, Indentation fix for UE4 RIGVM_METHOD() and GENERATED_BODY() macros, and my personal favorite, Open File in Solution is now available during initial solution parse! Check out the full release notes and be sure to download. Remember, maintenance must be current as of 2020.02.20.

Visual Assist build 2358 is available!

New Year, New Build! Welcome to 2020 and 2358. This release was driven largely to fix an issue with our licensing server and some corruption that may have been experienced by Unity users, but why stop there?

  • NEW Added C++ modernization refactoring: Convert Unscoped Enum to Scoped Enum (execute on the enum definition). See the documentation.
  • NEW Goto Related now allows hopping between *_Implementation and *_Validate implementations in UE4.
  • FIX Goto from a method declaration will now list *_Validate as a target in UE4.
  • NEW Added option (on the Goto page of Visual Assist Options dialog) to prefer implementations when executing Goto (Alt+G) (execution on the implementation will continue to go to the declaration as before).

Take a look at the full list of features and bug fixes here. And of course be sure to update!

Visual Assist build 2353 is available

This release represents a turning point for our development team. We’ve made great strides in fixing bugs associated with Visual Studio 2019 and have focused our attention on the future. A major lift in this release was our move to Clang 9. Future releases will leverage Clang in new ways so stay tuned! But Build 2353 wasn’t all about groundwork, Code Inspection has some nifty new features:

+ Code Inspection checkers are now more configurable. Further customize when Visual Assist alerts you of potential improvements.

+ Code Inspection UI is now searchable, and exposes more advanced information.

+ Code Inspections can now be selectively disabled in sections of your code using comments. If you don’t want to change a section of code, you can choose to not be alerted of potential improvements without disabling checkers globally.

+ New UI allows fine grained control of the resources Visual Assist will use when parsing. Reduce the impact of the initial parse of a new solution, especially in extremely large solutions where parsing may take several minutes. (Unreal Engine developers take note.)

For the full list of features and bug fixes take a look at our release notes, or download the installer.

Build 2353 requires software maintenance through 2019.11.07

Visual Assist build 2341.2 is available

The last build of Visual Assist, i.e. build 2341, introduced a bug for users of Microsoft Visual Studio 2019. If you use Microsoft’s newest IDE and installed build 2341, download and install build 2341.2.

Build 2341.2 requires software maintenance through 2019.08.05.

Check out the complete list of what’s new in build 2341.2, or download its installer.

Visual Assist build 2341 is available

The steady stream of functional and quality improvements to Visual Assist continues despite the recent hiccups with new purchasing and licensing systems. (Those systems are being ironed out.)

Visual Assist build 2341 improves one of its earliest features—enhanced syntax coloring—with the ability to set separate coloring for namespace identifiers and qualifiers, and enum members. Separate coloring of namespace identifiers and qualifiers was implemented primarily so the qualifiers can be dimmed, making it easier to read “remaining” code.

Another early feature of Visual Assist, Quick Info, became an enhancement to Visual Studio when Microsoft introduced its equivalent eons ago. Visual Assist build 2341 enhances the feature yet again by including in tooltips comments from parent classes. The additional comments are especialy valuable when referencing methods that override well-documented ones. Comments for the current symbol now include those from the immediate parent class, and the root parent.

Finally, build 2341 improves Encapsulate Field, a refactoring that lets you restrict or filter access to a member field. Encapsulate Field now allows an accessor to be omitted.

Build 2341 requires software maintenance through 2019.07.11.

Check out the complete list of what’s new in build 2341; learn to specify enhanced syntax colorslearn to enhance Quick Info; or download the installer for build 2341.

Visual Assist build 2331 is available

Extensibility has long been a strength of Microsoft Visual Studio, but extending the IDE too greatly can impede its startup. Thus, many developers are familiar with Visual Studio’s yellow status message that suggests an extension is likely causing slow startup. To alleviate slow startups, Microsoft has encouraged partners to load their extensions asynchronously. That encouragement is now a requirement in Microsoft’s latest IDE. In Visual Studio 16.1 Preview 1, extensions must load asynchronously.

Visual Assist build 2331 supports Visual Studio 16.1 Preview 1, and therefore loads asynchronously. In the new IDE, Visual Assist loads as soon as possible, often without noticeable delay. But, there are a few startup scenarios, e.g. when starting Visual Studio without a solution, that do expose subtle changes in loading.

You will know that Visual Assist is completely loaded in Visual Studio 2019 if the extension responds as you expect, or when notice appears in the status bar.

Visual Assist is not completely loaded if it looks or feels broken in the moments after startup, before a solution is loaded, or within seconds of loading a solution. Signs of incomplete loading include a toolbar that begins with disabled icons,

empty tool windows,

and failure to respond to commands in an editor window.

If Visual Assist is not completely loaded, coax it along by opening a solution, then wait a few seconds. If you try a command in an editor window and the command doesn’t work, simply retry it. Loading should have completed in the interim.

Build 2231 also adds a new command to insert a file path into the active document. The command is useful when working in strings and comments. Access Insert-Path via the VAssistX menu (Alt+X, T, P).

Build 2331 requires software maintenance through 2019.04.19

Check out the complete list of what’s new in build 2331; learn more about Insert Path; or download the installer for build 2331.

Visual Assist build 2324 is available

Microsoft’s recent spate of builds of Visual Studio 2019 is driving the recent succession of builds of Visual Assist. Build 2324 is no exception. It’s only feature of note is support for Visual Studio 2019 RC.

If, for some reason, you are still using Visual Studio 2019 Preview 1-3, Visual Assist build 2324 will install to your IDE, but know that Visual Assist is no longer supported in the environment.

Build 2324 requires software maintenance through 2019.03.08.

Check out the complete list of what’s new in build 2324, or download its installer.