Skip to content

Repo sync for protected branch #10609

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 18 commits into from
Feb 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added docs/debugger/media/vs-2022/copilot-sparkle-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/debugger/media/vs-2022/parallel-stacks-toolbar.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/debugger/using-the-parallel-stacks-window.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ The **Parallel Stacks** window has the following toolbar controls:
|![Search icon](media/vs-2022/parallel-stacks-toolbar-search.png "Search icon")|Search Control|With this feature you can easily search through stack frames and then use arrows to navigate between those results.|
|![Save icon](media/vs-2022/parallel-stacks-toolbar-save.png "Save icon")|Save Control| Enables you to save/export the content from the parallel stack window as an image.|
|![External Code icon](media/vs-2022/parallel-stacks-toolbar-external-code.png "External Code icon")|Show External Code Control| Using this feature, you can show/hide the stacks from the external code/libraries.|
|![Copilot Summarize icon](media/vs-2022/parallel-stacks-copilot-summarize.png "Summarize icon")|Summarize call stacks| Starting in Visual Studio 2022 version 17.13 Preview 4, you can choose **Summarize** when [Copilot](../ide/visual-studio-github-copilot-install-and-states.md) is installed and activated. This button opens the Copilot Chat window, preloaded with relevant thread context, allowing you to explore details, including thread states, function calls, and suggested fixes.|
::: moniker-end

### Stack Frame icons
Expand Down
10 changes: 5 additions & 5 deletions docs/debugger/view-data-in-tabular-visualizer.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: "View data with the Tabular visualizer "
description: View large collection objects with built-in tabular visualizers in the Visual Studio debugger and examine data by row and column for fields and properties.
ms.date: "01/13/2025"
ms.date: "02/04/2025"
ms.topic: "conceptual"
dev_langs:
- "CSharp"
Expand Down Expand Up @@ -60,13 +60,13 @@ Starting in Visual Studio 2022 version 17.11, you can directly change the **Expr

Starting in Visual Studio 2022 version 17.12 Preview 3, you get IntelliSense support to help you edit the expression.

Starting in Visual Studio 2022 version 17.12 Preview 2, you can get AI assistance to edit the LINQ expression. If you have Copilot activated, click the GitHub [Copilot](../ide/visual-studio-github-copilot-install-and-states.md) icon to open Copilot Chat.
Starting in Visual Studio 2022 version 17.13 Preview 2, you can get inline AI assistance to edit the LINQ expression. If you have Copilot activated, click the GitHub [Copilot](../ide/visual-studio-github-copilot-install-and-states.md) sparkle icon ![GitHub Copilot sparkle icon](../debugger/media/vs-2022/copilot-sparkle-icon.png) to open the inline Copilot Chat.

:::image type="content" source="../debugger/media/vs-2022/debug-ienumerable-visualizer-edit-expression-copilot.png" alt-text="Screenshot of Copilot button to get help to edit the expression.":::
:::image type="content" source="../debugger/media/vs-2022/debug-ienumerable-visualizer-edit-expression-copilot.gif" alt-text="Screenshot of Copilot button to get help to edit the expression.":::

In the Copilot Chat, you see LINQ syntax examples. Additionally, you can describe your query in natural language, and GitHub Copilot will generate the corresponding LINQ query. To apply LINQ query filtering to the visualizer, use the **Show in Visualizer** button in the chat.
You can describe your query in natural language, and GitHub Copilot will generate the corresponding LINQ query. To apply LINQ query filtering to the visualizer, press **Enter**.

:::image type="content" source="../debugger/media/vs-2022/debug-ienumerable-visualizer-edit-expression-copilot-show-in-visualizer.png" alt-text="Screenshot of Show in Visualizer button in Copilot Chat.":::
After at least one LINQ query has been generated by GitHub Copilot, you can choose to select the **Continue in Chat** button. This action opens a dedicated GitHub Copilot Chat window where you can refine your query, ask follow-up questions, view LINQ syntax examples, or explore alternative approaches in more detail. To apply a suggested LINQ query to the visualizer, use the **Show in Visualizer** button in the chat.

## Filter, sort, and export visualizer data

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/extensibility/media/f5-runtime-target.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/extensibility/media/vs-dotnet-timeline.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
---
title: .NET Companatibilty for VisualStudio.Extensibility Extensions
description: .NET runtime requirements for VisualStudio.Extensibility extensions
author: murphymcquet-msft
ms.author: murphymcquet
manager: tinali
ms.date: 02/04/2025
ms.topic: conceptual
ms.subservice: extensibility-integration
---
# .NET Companatibilty for VisualStudio.Extensibility Extensions

The new VisualStudio.Extensibilty model allows extensions to be run outside the main Visual Studio process in a separate .NET host process. Because .NET is used as the runtime to execute VisualStudio.Extensibility extensions, extensions built using the VisualStudio.Extensibility framework must stay up-to-date with the publicly supported .NET long-term servicing (LTS) runtimes.

## .NET Runtime Support Model

The .NET runtime has its own lifetime and servicing timelines, independent of Visual Studio. The current cadence sees a new .NET release every year, with odd-numbered major releases receiving 18 months of support, and even-numbered releases receiving long-term support (LTS) of 36 months. At any given time, Visual Studio ships with .NET LTS versions still in public support. For the official list of .NET runtimes and their lifetimes, see [here](https://learn.microsoft.com/lifecycle/products/microsoft-net-and-net-core).

The following timeline illustrates an approximation of the different .NET versions shipped with Visual Studio.

![Screenshot of .NET runtime timeline.](../media/vs-dotnet-timeline.png "Screenshot of .NET runtime timeline.")

By default, VisualStudio.Extensibility extensions target whatever the oldest supported .NET LTS runtime is. However, extension developers can specify in their extension metadata which versions of .NET their extension is known to support. Given this information, Visual Studio chooses an appropriate target based on the extension's declared .NET runtime version and its known end-of-life dates.

It's important to note that developers using VisualStudio.Extensibility should target a current .NET SDK. If an extension is developed for .NET version that is no longer publicly supported - and therefore no longer shipped with Visual Studio - then Visual Studio will choose the oldest publicly supported runtime available to run the extension. Although the likelihood of being affected by a breaking change between major .NET versions is low, isn't guaranteed that an application running on a previous .NET version will work on a newer one, and so the extension isn't guaranteed to work.

## Experiences

### End-user Experience

Visual Studio will choose which .NET runtime to use for an extension based on its declared supported .NET version and the .NET versions available to Visual Studio. There are only two scenarios where users will see any departure from the current experience:

* If an extension is only supported up to a .NET version that is near end-of-life, an info icon will be displayed on the extension tile in the Extension Manager window to inform the user that the extension is in danger of being unsupported.
* If an extension is only supported up to a .NET version that is past end-of-life, a warning icon will be displayed on the extension tile in the Extension Manager window to inform the user that the extension is being run as best-effort on a version of .NET that hasn't declared support for, and may not work correctly.

![Screenshot of extensions with different .NET runtime configurations.](../media/installed-extensions-extension-manager.png "Screenshot of extensions with different .NET runtime configurations.")

In both scenarios, the user should contact the extension developer and ask them to ensure the extension works on a supported .NET LTS version and publish the updated extension.

### Developer Experience - Debugging

For developers of VisualStudio.Extensibility extensions, the F5 debugging experience has been updated to allow the selection of the .NET runtime to use when debugging or testing an extension. The objective of this experience is to facilitate compatibility testing of VisualStudio.Extensibility extensions on different .NET runtimes.

Now, when the selected startup project is a VisualStudio.Extensibility project, an additional menu item with a list of the .NET runtimes that are shipped with Visual Studio appears under the debug menu dropdown. Debugging the extension under the chosen runtime ensures that the debugged extension executes on the selected runtime. In the experimental instance, the extension tile in the Extension Manager tool window displays a lab icon and specify the .NET version that it's being evaluated for. In the following screenshot, this is demonstrated with the `Command Sample` extension.

Note that the example is a contrived scenario where Visual Studio includes .NET 6 and .NET 8. In actual releases only supported LTS versions of .NET will be included with Visual Studio.

![Screenshot of setting F5 Debug runtime target.](../media/f5-runtime-target.png "Screenshot of setting F5 Debug runtime target.")
![Screenshot of extension manager during F5 debug.](../media/f5-extension-manager-tool-window.png "Screenshot of extension manager during F5 debug.")

### Developer Experience - Extension Configuration

An optional `DotnetTargetVersions` field is available on the `ExtensionConfiguration` for developers to specify one or more .NET runtimes that their extension is able to target. This field takes a list of target framework monikers such as `net8.0` or `netstandard2.0`. If provided, this information allows Visual Studio to determine which runtime should be used to run the extension. If the field is left empty, then the older of the publicly supported runtimes that come with Visual Studio will be set as a default.

The VisualStudio.Extensibility analyzer raises warnings if the target framework monikers specified in the extension project file `<TargetFrameworks>` property are inconsistent with the target framework monikers declared or omitted in the `ExtensionConfiguration`. If no targets are given in the `ExtensionConfiguration`, then a warning is raised if any of the monikers in `<TargetFrameworks>` aren't compatible with the chosen default. If targets are given in the `ExtensionConfiguration`, then a warning is raised if any of the monikers specified in `<TargetFrameworks>` aren't compatible with the provided values.

For example, if an extension builds targeting `netstandard2.0`, then it's compatible with any .NET version. However, if a developer leaves the `DotnetTargetVersions` empty and `net8.0` is chosen as the default, if the extension builds targeting `net6.0` a warning is raised.

The below pictures show an example of an extension which is built targeting .NET 8, but specified .NET 6 in the `DotnetTargetVersions`.

![Screenshot of extension code configured to run on .NET 6.](../media/extension-configuration.png "Screenshot of extension code configured to run on .NET 6.")
![Screenshot of build warning for extension where the target .NET runtime is out of support.](../media/invalid-extension-configuration-warning.png "Screenshot of build warning for extension where the target .NET runtime is out of support.")

## Testing & Early Access

If you would like to try managing your extension with multiple .NET runtimes see the scripts included in the [VSExtensibility repo](https://github.com/microsoft/VSExtensibility/tree/main/New_Extensibility_Model). The included scripts enable you to update any of your Visual Studio instances with .NET 9. Note that .NET 9 is *not* an LTS version of .NET and that this is *not* a supported scenario, but will provide a sample of the future experience of developing VisualStudio.Extensibility extensions with multiple .NET runtimes available.
2 changes: 2 additions & 0 deletions docs/extensibility/visualstudio.extensibility/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ items:
href: ./get-started/in-proc-extensions.md
- name: Compare extensibility models
href: extensibility-models.md
- name: Managing extension .NET targets
href: dotnet-management-overview.md
- name: Get started
expanded: true
items:
Expand Down
12 changes: 6 additions & 6 deletions docs/ide/ai-assisted-development-visual-studio.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: AI-assistance for developers in Visual Studio
description: Learn about the AI-assisted development tools in Visual Studio, such as GitHub Copilot Completions and Chat, and IntelliCode, and how they can help you write code more efficiently.
ms.date: 12/18/2024
ms.date: 2/5/2025
ms.topic: overview
author: anandmeg
ms.author: meghaanand
Expand Down Expand Up @@ -103,17 +103,17 @@ The following table compares the capabilities of GitHub Copilot (and GitHub Copi
| Whole function & multi-line completions in gray text | **Yes** <br/>[Learn more](visual-studio-github-copilot-extension.md#how-github-copilot-works) | No |
| Repeated edits detection | No | **Yes** <br/>[Learn more](intellicode-suggestions.md)|
| Convert Natural language comments to code| **Yes** <br/>[Learn more](visual-studio-github-copilot-extension.md#how-github-copilot-works) | No |
| Solve code problems with Natural language driven dev assistance | **Yes**, with Chat extension enabled. <br/>[Learn more](visual-studio-github-copilot-chat.md#use-copilot-chat-in-visual-studio)| No |
| Code debugging | **Yes**, with Chat extension enabled. <br/>[Learn more](../debugger/debug-with-copilot.md)| No |
| Measure app performance through profiling | **Yes**, with Chat extension enabled. <br/>[Learn more](https://devblogs.microsoft.com/visualstudio/simplified-code-refinement-and-debugging-with-github-copilot-chat/#cpu-usage-auto-insights-in-the-profiler) | No |
| Solve code problems with Natural language driven dev assistance | **Yes**, with Copilot Chat. <br/>[Learn more](visual-studio-github-copilot-chat.md#use-copilot-chat-in-visual-studio)| No |
| Code debugging | **Yes**, with Copilot Chat. <br/>[Learn more](../debugger/debug-with-copilot.md)| No |
| Measure app performance through profiling | **Yes**, with Copilot Chat. <br/>[Learn more](https://devblogs.microsoft.com/visualstudio/simplified-code-refinement-and-debugging-with-github-copilot-chat/#cpu-usage-auto-insights-in-the-profiler) | No |
| API usage examples | No | **Yes** <br/>[Learn more](https://devblogs.microsoft.com/visualstudio/intellicode-api-usage-examples/)|
| Languages supported | Supports several programming languages and frameworks, including but not limited to: C#, C++, Python, JavaScript, and TypeScript| C#, XAML, C++, JavaScript, TypeScript, Visual Basic |

## Next steps

To learn more, consider exploring the following resources:

- [GitHub Copilot extension: Getting started](visual-studio-github-copilot-extension.md)
- [GitHub Copilot Chat extension: Getting started](visual-studio-github-copilot-chat.md)
- [GitHub Copilot Completions](visual-studio-github-copilot-extension.md)
- [GitHub Copilot Chat](visual-studio-github-copilot-chat.md)
- [GitHub Copilot: Compare plans](https://github.com/features/copilot)
- [GitHub Copilot Trust Center](https://resources.github.com/copilot-trust-center/)
Loading