Visual Studio 2022 for Mac version 17.0 Release Notes
Developer Community | System Requirements | Documentation | Blogs | Servicing |
Update 17.0.6: This update addresses these issues.
Update 17.0.5: This update addresses these issues.
Update 17.0.4: This update addresses these issues.
Update 17.0.3: This update addresses these issues.
Update 17.0.2: This update addresses these issues.
Update 17.0.1: This update addresses these issues.
What's New in Visual Studio 2022 for Mac
Welcome to the v17.0 release of Visual Studio 2022 for Mac. This is the fastest Visual Studio for Mac version yet with an all new native macOS UI, fully running on .NET 6, and optimized for Apple Silicon (ARM64) processors. Some of the top highlights of this release include:
- New native macOS UI
- Support to run natively on M1/Apple Silicon (ARM64) processors
- Introducing the Git Changes window
- Tool window drag & drop docking
- Development with .NET 6
- Support for C# 10
Visual Studio 2022 for Mac Blog Posts
The Visual Studio Blog is the official source of product insight from the Visual Studio Engineering Team. You can find in-depth information about the Visual Studio 2022 for Mac releases in the following posts:
General IDE Improvements
New native macOS UI
We’ve introduced a new look and feel in Visual Studio for Mac that combines the modern macOS UI with the productive experience you’ve come to know and love in Visual Studio. Some of the most visible changes include:
- Refreshed UI across all tool windows, preferences, and document tabs.
- New light & dark themes that can synchronize with the macOS theme settings.
- A new status bar reporting IDE status in the footer, as well as highlighting number of warnings or errors in a solution.
Support to run natively on Apple Silicon (ARM64) processors
The IDE now runs natively on Apple Silicon (ARM64) Processors like the M1 processor. This was a top request from customers on our Developer Community site. Among other improvements, large solutions now load up to 50% faster.
Running the IDE on .NET 6
The IDE has moved to run on the .NET 6 runtime when previously it ran on the Mono runtime. In addition to providing performance improvements throughout the product, this also enabled the above work to run the IDE natively on Apple Silicon (ARM64) processors.
Improved consistency with Visual Studio (Windows)
- Menus and terminology have been updated across the IDE to make it feel more familiar to Visual Studio users.
- The introduction of the Git Changes window.
- A new tool window drag & drop experience
Accessibility improvements
As part of the move to fully native macOS UI, accessibility has been improved throughout the IDE:
- Improvements to VoiceOver support across the full feature set.
- The default light and dark themes have been updated to better match macOS colors and improve contrast.
Tool window drag and drop docking experience
Tool windows can be docked (attached to a side of the IDE) by dragging their title and dropping them on top of drop-target icons that appear in the IDE. When dragging the windows, these drop-target icons appear to make it easier to pick a side of the IDE, or window, for placing the tool window.
Notable Issues Fixed
- Fixed an issue where you couldn't drag files to main IDE window to open them
- Fixed an issue where new files couldn't be saved if they were created without an open project
- Fixes for top reported issues from the Developer Community:
- Collapsed regions and methods are blurry on Retina displays
- VS hangs at startup
- Dark mode should follow the operating system settings
- New macOS Big Sur Rounded Square Icon
- Drag and Drop - sometimes file into solution moving around folder
- About the main window cannot be closed in full screen mode
- GTK scroll views don't work right on macOS Big Sur beta
- Nested files in the projects do not appear
- VS2019 macOS: Package failed to install
- "Your trial expired" doesn't respond
Editor
Shared Editor Improvements
Subword navigation
Ctrl+Alt+Left Arrow and Ctrl+Alt+Right Arrow will now navigate by subword. For instance, the string "HelloWorld" identifies "Hello" and "World" as subwords. A new Select subword on double click option has been added in Preferences > Text Editor > Behavior.
Multi-caret copy/paste experience
We improved the multi-caret copy and paste experience. Previously, pasting multiple lines into multiple carets resulted in the entire clipboard being duplicated at each caret. Now, pasting multiple lines into the same number of carets will insert each line to a respective caret.
To use multi-caret press Control+Option+mouse click and use Option+Shift+arrow key to expand selections. Next, press Cmd+C to copy the text in multiple selections. Use Control+Option+mouse click to create multiple carets for each line that you would like to paste in desired locations. Finally, press Cmd+V to paste each line at its own caret.
C# Language Tooling
New quick fixes and refactorings
In C# 8.0 we introduced nullable reference types allowing you to declare whether null is expected. To use nullable reference types you either need to add the <Nullable>
enable</Nullable>
element to your project file or add the #nullable enable pragma to every source file in your project. To help streamline this process we now automatically include the <Nullable>
enable</Nullable>
for new .NET projects.
In C# 10.0 we are introducing File-scoped namespace giving you the option to not nest class definitions within a namespace. We now have a refactoring to convert a namespace to a file-scoped namespace. In-order to use file-scoped namespace you will first need to add the <LangVersion>
preview</LangVersion>
element to your project file. Next, place your cursor on a namespace. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Convert to file-scoped namespace.
There is now a refactoring to prefer is not null
over is object
when applied to value types. To use this new refactoring place your cursor on a type check. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Prefer null check over type check.
A new Introduce parameter refactoring can move a new parameter from the method implementation to its callers.
Auto-generated exception tags in XML documentation comments
XML comments will now automatically generate an <exception>
tag within a <summary>
tag allowing you to add a description when a method explicitly throws exceptions.
Razor Editing
- < > Color in .razor is hard to read
- Calculating colors in Blazor files results in high CPU pressure.
- Url completion in Razor files does not act as expected (duplicates path content)
F# Editing
Fixed top reported issues from the Developer Community:
- F# interactive doesn't execute any commands
- Error shown in F# Interactive
- F# Interactive crash report
Debugging
Notable Issues Fixed
- Fixed an issue where in the Exception Caught dialog, double clicking a stack frame moves editor to wrong location
- Fixed an issue where users cannot save or restore pinned debug watch items
- Fixed an issue where pinning a debugger tooltip cuts off text and unpinning breaks pinning
- Fixed top reported issues from the Developer Community:
Testing
Fixed top reported issues from the Developer Community:
- Stop button doesn't stop unit test
- Visual Studio Mac does not close dotnet process for testhost.dll
- Parameterized tests show up with the same name in the unit pad
- Regression in v8.5: Unit Tests pad wrongly splits some unit tests in separate nodes, in some scenarios
- Adding a SetupFixture to a unit test makes the test pad show [default namespace] for all tests
- VS Mac NUnit plugin fail to load custom assemblies + autocompletion issues in VS Mac 8.7 preview
- xUnit test never run again after cancellation
- Click "stop the executing solution" and the test is still running in Visual Studio for Mac
- Unit tests don't stop running
Git Version Control
Git Changes window
This release introduces the Git Changes window from Visual Studio (Windows). As you do your work, Visual Studio for Mac keeps track of the file changes to your project in the Changes section of the Git Changes window. When it nears time to commit your work, you can use this window to review all the changes you've made, stage, and then commit. You can also use this window to stash work, initiate Git push & pull commands, as well as amend a recent commit.
Clone from GitHub and open in Visual Studio for Mac
Visual Studio for Mac can now be opened when cloning a Git repo from the browser, such as on GitHub; support has been added for the git-client:// protocol.
Notable Issues Fixed
Fixed top reported issues from the Developer Community
- Too many clicks to commit and push to a git repository
- Git compare not working
- 'Git Changes' screen does not reflect the correct branch
- Git checkout branch freeze
NuGet
Fixed top reported issues from the Developer Community
Search
New search grouping and filtering options
The Search Results window includes new options for grouping by file/folder, or viewing results in a tree view. You can also search within the search results.
Notable Issues Fixed
- Fixed an issue where Find in Files search results are scrambled when sorting column headers
- Fixed an issue where the first letter is not highlighted in search results
- Fixed an issue where search results were including the contents of compiled Blazor component files
- Fixed support for Chinese characters in the Global search
- Fixed top reported issues from the Developer Community
- Go To File doesn't update list of files correctly
- Find in Files doesn't properly prepopulate search text
- Fixed an issue where Search results are displayed in wrong place
- "Find in Files" and "Command-. Search" does not search solution files
- Regex option causes unexpected replacement of text when searchin in files
- Git push is not supported
- Git blame info is misplaced
- VS Mac: Git Changes - Cannot commit
Installer
Fixed top reported issues from the Developer Community
.NET Development
Development with .NET 6
You can now use .NET 6 to build applications console apps, or ASP.NET Core solutions for the web or cloud. Visual Studio for Mac supports the latest release of .NET 6 while continuing to enable development with .NET Core 3.1 and .NET 5. Learn more about the improvements in .NET 6.
Notable Issues Fixed
- We have updated mono to 6.12.0.174 addressing CVE-2020-8927. The mono update also requires updating Xamarin.iOS to 15.8.0.3, Xamarin.Mac to 8.8.0.3 and Xamarin.Android to 12.2.4.3
- Updated the .NET SDKs to 6.0.203, 5.0.408 and 3.1.419, addressing CVE-2022-23267, CVE-2022-29145
- We have updated the .NET SDKs to 6.0.200 and 5.0.405 addressing CVE-2022-21986
- On Apple Silicon (M1 or Arm64) machines, the .NET 5.0, 6.0 and .NET Core 3.1 x64 SDKs, released in November, are not supported by Visual Studio for Mac 17.0 Preview 3. This is because the new x64 .NET SDKs install into a different directory and Visual Studio for Mac currently only supports the original .NET SDK install location, which is now only used by the Arm64 SDK
- If .NET 5.0, 6.0 or .NET Core 3.1 x64 SDKs are installed, then these should be removed, and the .NET 6 Arm64 SDK installed instead.
- Learn how to migrate to .NET 6 Arm64 SDK with these instructions
- Fixed reported issues on the Developer Community
Azure Development
- Azure Functions v4 for .NET 6 is now supported on all platforms.
- Added full support for Azure Functions on x64 and Azure Functions v4 on Arm64. Azure Functions v2 and v3 are not supported on Arm64 See known issues
- Fixed an issue where developing a Blazor Server project on M1 machines, the opened browser page information is lost and the interface is displayed incorrectly
Notable Issues fixed
Fixed top reported issues from the Developer Community
Unity - Game Development
Fixed top reported issues from the Developer Community
- Fixed an issue where Clicking a line number in Unity console does not take us to the proper line in Visual Studio
- Intellisense was broken when using Visual Studio for Mac with Unity and CodeAnalysis
Xamarin - Mobile Development
- Added Xcode 13.3 support
Building Xamarin traditional/Mono-based projects with the Mono-based MSBuild Starting with Visual Studio for Mac 17.0 Preview 7, you may now build using the MSBuild provided by the .NET SDK or MSBuild on Mono.
By default, classic Xamarin projects and SDK style projects targeting .NET v4.x will be built using MSBuild on Mono.
If your solution contains any project that requires building with MSBuild on Mono all projects in that solution will be built with MSBuild on Mono. This will prevent build errors due to differences in behavior between the two different MSBuilds when classic projects reference SDK style projects.
If your solution does not contain any projects that require building with MSBuild on Mono then it will be built with MSBuild provided by the .NET SDK.
Additionally, some NuGet packages may contain MSBuild tasks that do not support MSBuild from the .NET SDK and may require building with MSBuild on Mono. An MSB4062 error containing the text 'Could not load file or assembly 'Microsoft.Build.Utilities.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'' is an example of an incompatible MSBuild task being used. To work around this, you will need to manually configure your solution to build with MSBuild on Mono:
- Navigate to Solution Options by right clicking the solution in the Solution window and selecting Option
- Select ‘Build – General’
- Check the ‘Build with MSBuild on Mono’ box to build with MSBuild on Mono
Notable Issues Fixed
Fixed top reported issues from the Developer Community
- Can't Disable Fast Assembly Deployment On Android Project
- Cannot edit storyboards on XCode 13 and CPU usage is 100%
- failed to synchronize email account wiht Apple developer portal
- HE0018: Could not launch the simulator application
- Showing "Loading SDK component information failed. Please retry" on selecting Full List (Unsupported) in repository of android in SDK Manager
- Android SDK Manager and Device Manager not working
- Android designer error on rendering layout VS 2022
- VS for Mac 2022 Xamarin UI Tests project fails to load
- VSMac 17.0: Android Designer Cannot open content_main.xml after Android project creation
- Xamarin. {iOS,Android}. CSharp.targets resolved incorrectly in pre-existing solution, breaks nuget restore
- Kotlin 1.6 metadata sometimes isn't applied
- Native Crash (SIGABRT): monoeg_g_usleep: clock_nanosleep () returned -1
- Debug build with PublishTrimmed=true and LinkMode=link fails when using local Mono.Android build from source
- Incremental Release builds don't AOT the app
- Execution failed running Android first time
- proguard.txt is included many times in Project
- Can't run mac apps
- Metadata file not found when building Xamarin.iOS solution
- Android - TLS support not available
- Cannot run Xamarin.Mac application, 'execution failed'
- Package failed to install - Xamarin Profiler
Programming Languages
C# 10
- Record structs and
with
expressions on structs (record struct Point(int X, int Y);
,var newPoint = point with { X = 100 };
) - Global using directives:
global using
directives avoid repeating the sameusing
directives across many files in your program - Improved definite assignment: definite assignment and nullability analysis better handle common patterns such as
dictionary?.TryGetValue(key, out value) == true
- Constant interpolated strings: interpolated strings composed of constants are themselves constants
- Extended property patterns: property patterns allow accessing nested members (
if (e is MethodCallExpression { Method.Name: "MethodName" })
) - Sealed record ToString: a record can inherit a base record with a sealed
ToString
- Incremental source generators: improve the source generation experience in large projects by breaking down the source generation pipeline and caching intermediate results
- Mixed deconstructions: deconstruction-assignments and deconstruction-declarations can be blended together (
(existingLocal, var declaredLocal) = expression
) - Method-level AsyncMethodBuilder: the AsyncMethodBuilder used to compile an
async
method can be overridden locally - #line span directive: allow source generators like Razor fine-grained control of the line mapping with
#line
directives that specify the destination span (#line (startLine, startChar) - (endLine, endChar) charOffset "fileName"
) - Lambda improvements: attributes and return types are allowed on lambdas; lambdas and method groups have a natural delegate type (
var f = short () => 1;
) - Interpolated string handlers: interpolated string handler types allow efficient formatting of interpolated strings in assignments and invocations
- File-scoped namespaces: files with a single namespace don't need extra braces or indentation (
namespace X.Y.Z;
) - Parameterless struct constructors: support parameterless constructors and instance field initializers for struct types
- CallerArgumentExpression: this attribute allows capturing the expressions passed to a method as strings.
See the C# language feature status and breaking changes for more details.
Visual Studio 2022 for Mac Releases
- July 12th, 2022 — Visual Studio 2022 for Mac version 17.0.6
- June 28th, 2022 — Visual Studio 2022 for Mac version 17.0.5
- June 21st, 2022 — Visual Studio 2022 for Mac version 17.0.4
- June 14th, 2022 — Visual Studio 2022 for Mac version 17.0.3
- June 7th, 2022 — Visual Studio 2022 for Mac version 17.0.2
- May 31st, 2022 — Visual Studio 2022 for Mac version 17.0.1
- May 23rd, 2022 — Visual Studio 2022 for Mac version 17.0
Visual Studio 2022 for Mac v17.0.6
17.0.6 build 4 released July 12th, 2022
This release focuses on fixing the following issues found in the v17.0.x releases:
- We have updated the .NET SDKs to 6.0.302 and 3.1.421.
- Fixed an issue where VS for Mac might appear to hang when launching the updater.
Visual Studio 2022 for Mac v17.0.5
17.0.5 build 6 released June 28th, 2022
This release focuses on fixing the following issues found in the v17.0.x releases:
- Fixed an issue where the Git status might become out of sync with the Git index.
- Fixed issues reported on the Developer Community:
Visual Studio 2022 for Mac v17.0.4
17.0.4 build 23 released June 21st, 2022
This release focuses on fixing the following issues found in the v17.0.x releases:
- Fixed several reliability and performance issues.
- Fixed issues reported on the Developer Community:
- Security Advisory Notice for mono update to 6.12.0.182:
- CVE-2022-30184 .NET Information Disclosure Vulnerability A vulnerability exists in .NET 6.0 and .NET Core 3.1 within NuGet where a credential leak can occur.
Visual Studio 2022 for Mac v17.0.3
17.0.3 build 21 released June 14th, 2022
This release focuses on fixing the following issues found in the v17.0.x releases:
- Fixed an issue where XAML files appeared blank initially after loading or creating a project.
- Updated the .NET SDKs to 6.0.301 and 3.1.420.
- Security Advisory Notice
- CVE-2022-24513 Elevation of privilege vulnerability A potential elevation of privilege vulnerability exists when the Microsoft Visual Studio updater service improperly parses local configuration data.
- CVE-2022-23267 .NET Core Denial of Service Vulnerability A vulnerability exists in .NET 6.0, .NET 5.0 and .NET Core 3.1 where a malicious client can cause a Denial of Service via excess memory allocations through HttpClient.
- CVE-2022-30184 .NET Information Disclosure Vulnerability A vulnerability exists in .NET 6.0 and .NET Core 3.1 within NuGet where a credential leak can occur.
Visual Studio 2022 for Mac v17.0.2
17.0.2 build 8 released June 7th, 2022
This release focuses on fixing the following issues found in the v17.0.x releases:
Cannot load Xamarin.Forms project without dotnet sdk installed
Fixed issues reported on the Developer Community:
Visual Studio 2022 for Mac v17.0.1
17.0.1 build 72 released May 31st, 2022
This release focuses on fixing the following issues found in the v17.0 release:
- Search completed status bar label is misaligned
- Run Configurations description cutoff
- Fixed several incorrect German translations
- Text editor preferences were not localized
- Multi-target console project runs net472 exe with dotnet
- Android run configurations does not select Default by default
- Fixed issues reported on the Developer Community:
Feedback and Suggestions
We would love to hear from you! You can report a problem through the Report a Problem option in Visual Studio for Mac IDE. You can track your feedback, including suggestions, in the Developer Community portal.
Known Issues
The following is a list of all existing known issues in Visual Studio 2022 for Mac version 17.0:
- .NET MAUI development is not officially supported in Visual Studio for Mac 17.0. Initial support will be provided in Visual Studio for Mac 17.3, currently in preview.
- The Tasks (TODO list) window is not available.
- The Regular expression toolkit is not available.
- Xamarin.UITest is not yet supported.
- Known issue when adding an Apple account from the Applications tab in the Info.plist editor.
- After the account is added, the Apple Id is not visible, and the provisioning profiles are not synchronized until the Info.plist is closed and re-opened.
- Syncing Apple Developer Account certificates and provisioning profiles is not supported except for accounts that are intended to be used for In-House deployments. To workaround this issue, please download certificates and provisioning profiles directly from the Apple Developer Account web site.
- On ARM64 processors, dotnet-ef tool is supported for projects targeting ASP.NET Core 6.0 and higher only.
- Protected NuGet package sources added or edited inside the IDE won't be picked up by the dotnet CLI. Protected sources which provide their own credential provider, such as Azure DevOps, are still supported by the IDE and CLI. Package restore is also supported for clear passwords in NuGet.config.
- Entering Chinese characters into the Integrated Terminal can cause the IDE to crash. Due to this, the Integrated Terminal is temporarily disabled for Chinese Simplified and Chinese Traditional locales until this issue can be fixed.
- When using the integrated Docker support, if you encounter the issue "Error from pipe program 'docker': FATAL ERROR: Failed to initialize dispatcher with error 80131534" when attempting to debug, rename or remove the ~/vsdbg folder, and then trying to debug again.
- Xamarin and Mono projects will fail to build if no .NET SDK is installed. The workaround is to install any .NET SDK.
- Occasionally, using the quick fix actions to move a class to a file will result in a blank editor window. Attempting to save will have no effect. To workaround the issue, click from one editor tab to another, and back, to refresh the editor and the contents of the file will be visible again.