Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
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
118 changes: 107 additions & 11 deletions docs/ide/file-nesting-solution-explorer.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: File nesting rules for Solution Explorer
description: Discover Solution Explorer in Visual Studio and review how to work with file nesting rules, presets, and customization for project-specific settings.
ms.date: 6/4/2025
ms.date: 04/15/2026
ms.topic: how-to
helpviewer_keywords:
- "file nesting"
Expand All @@ -21,7 +21,13 @@ ms.subservice: general-ide

## File nesting options

:::moniker range="visualstudio"
![Screenshot that shows the button for turning file nesting on and off.](media/visualstudio/file-nesting-on-off.png)
:::moniker-end

:::moniker range="vs-2022"
![Button for turning file nesting on/off](media/filenesting_onoff.png)
:::moniker-end

The available options for non-customized file nesting are:

Expand All @@ -31,17 +37,42 @@ The available options for non-customized file nesting are:

* **Web**: This option applies the **Web** file nesting behavior to all the projects in the current solution. It has numerous rules, and we encourage you to check it out and tell us what you think. The following screenshot highlights just a few examples of the file nesting behavior that you get with this option:

:::moniker range="visualstudio"
![Screenshot that shows file nesting in Solution Explorer.](media/visualstudio/file-nesting.png)
:::moniker-end

:::moniker range="vs-2022"
![File nesting in Solution Explorer](media/filenesting.png)
:::moniker-end

## Customize file nesting



:::moniker range="visualstudio"
If you don’t like what you get out-of-the-box, you can create your own, custom file nesting settings that instruct **Solution Explorer** how to nest files. You can add as many custom file nesting settings as you like, and you can switch between them as desired. To create a new custom setting, you can start with an empty file, or you can use the **Default** settings as your starting point:

![Screenshot that shows the Add Custom File Nesting Settings dialog.](media/visualstudio/file-nesting-add-custom.png)

We recommend you use **Default** settings as your starting point because it’s easier to work with something that already functions. If you use the **Default** settings as your starting point, the *.filenesting.json* file looks similar to the following file:

:::moniker-end

:::moniker range="vs-2022"
If you don’t like what you get out-of-the-box, you can create your own, custom file nesting settings that instruct **Solution Explorer** how to nest files. You can add as many custom file nesting settings as you like, and you can switch between them as desired. To create a new custom setting, you can start with an empty file, or you can use the **Web** settings as your starting point:

![Add custom file nesting rules](media/filenesting_addcustom.png)

We recommend you use **Web** settings as your starting point because it’s easier to work with something that already functions. If you use the **Web** settings as your starting point, the *.filenesting.json* file looks similar to the following file:
:::moniker-end

:::moniker range="visualstudio"
![Screenshot that shows nesting rule providers in a custom settings file.](media/visualstudio/file-nesting-edit-custom.png)
:::moniker-end

:::moniker range="vs-2022"
![Use existing file nesting rules as the basis for custom settings](media/filenesting_editcustom.png)
:::moniker-end

Let’s focus on the node **dependentFileProviders** and its child nodes. Each child node is a type of rule that Visual Studio can use to nest files. For example, **having the same filename, but a different extension** is one type of rule. The available rules are:

Expand All @@ -61,41 +92,69 @@ Let’s focus on the node **dependentFileProviders** and its child nodes. Each c

This provider lets you define file nesting rules using specific file extensions. Consider the following example:

:::moniker range="visualstudio"
![Screenshot that shows an extentionToExtension rule.](media/visualstudio/file-nesting-extensiontoextension.png)

![Screenshot that shows the effect of the extensionToExtension rule.](media/visualstudio/file-nesting-extensiontoextension-effect.png)
:::moniker-end

:::moniker range="vs-2022"
![extentionToExtension example rules](media/filenesting_extensiontoextension.png)

![extentionToExtension example effect](media/filenesting_extensiontoextension_effect.png)
:::moniker-end

* *cart.js* is nested under *cart.ts* because of the first **extensionToExtension** rule
* *file.js* is nested under *file.ts* because of the first **extensionToExtension** rule.

* *cart.js* is not nested under *cart.tsx* because `.ts` comes before `.tsx` in the rules, and there can only be one parent
* *file.js* isn't nested under *file.tsx* because `.ts` comes before `.tsx` in the rules, and there can only be one parent.

* *light.css* is nested under *light.sass* because of the second **extensionToExtension** rule
* *light.css* is nested under *light.sass* because of the second **extensionToExtension** rule.

* *home.html* is nested under *home.md* because of the third **extensionToExtension** rule
* *home.html* is nested under *home.md* because of the third **extensionToExtension** rule.

### The fileSuffixToExtension provider

This provider works just like the **extensionToExtension** provider, with the only difference being that the rule looks at the suffix of the file instead of just the extension. Consider the following example:

:::moniker range="visualstudio"
![Screenshot that shows a fileSuffixToExtension rule.](media/visualstudio/file-nesting-filesuffixtoextension.png)

![Screenshot that shows the effect of the fileSuffixToExtension rule.](media/visualstudio/file-nesting-filesuffixtoextension-effect.png)
:::moniker-end

:::moniker range="vs-2022"
![fileSuffixToExtension example rules](media/filenesting_filesuffixtoextension.png)

![fileSuffixToExtension example effect](media/filenesting_filesuffixtoextension_effect.png)
:::moniker-end

* *portal-vsdoc.js* is nested under *portal.js* because of the **fileSuffixToExtension** rule
* *portal-vsdoc.js* is nested under *portal.js* because of the **fileSuffixToExtension** rule.

* every other aspect of the rule works the same way as **extensionToExtension**
* Every other aspect of the rule works the same way as **extensionToExtension**.

### The addedExtension provider

This provider nests files with an additional extension under the file without an additional extension. The additional extension can only appear at the end of the full filename.

Consider the following example:

:::moniker range="visualstudio"

![Screenshot that shows the addedextension rule.](media/visualstudio/file-nesting-addedextension.png)

![Screenshot that shows the effect of the addedextension rule.](media/visualstudio/file-nesting-addedextension-effect.png)

:::moniker-end

:::moniker range="vs-2022"

![addedExtension example rules](media/filenesting_addedextension.png)

![addedExtension example effect](media/filenesting_addedextension_effect.png)

* *file.html.css* is nested under *file.html* because of the **addedExtension** rule
:::moniker-end

* *file.html.css* is nested under *file.html* because of the **addedExtension** rule.

> [!NOTE]
> You don't specify any file extensions for the `addedExtension` rule; it automatically applies to all file extensions. That is, any file with the same name and extension as another file plus an additional extension on the end is nested under the other file. You can't limit the effect of this provider to just specific file extensions.
Expand All @@ -106,11 +165,19 @@ This provider nests files with an additional extension under a file without an a

Consider the following example:

:::moniker range="visualstudio"
![Screenshot that shows a pathSegment rule.](media/visualstudio/file-nesting-pathsegment.png)

![Screenshot that shows the effect of the pathSegment rule.](media/visualstudio/file-nesting-pathsegment-effect.png)
:::moniker-end

:::moniker range="vs-2022"
![pathSegment example rules](media/filenesting_pathsegment.png)

![pathSegment example effect](media/filenesting_pathsegment_effect.png)
:::moniker-end

* *jquery.min.js* is nested under *jquery.js* because of the **pathSegment** rule
* *jquery.min.js* is nested under *jquery.js* because of the **pathSegment** rule.

> [!NOTE]
> - If you don't specify any specific file extensions for the `pathSegment` rule, it applies to all file extensions. That is, any file with the same name and extension as another file plus an additional extension in the middle is nested under the other file.
Expand All @@ -133,21 +200,37 @@ Consider the following example:

This provider lets you define file nesting rules for files with any extension but the same base file name. Consider the following example:

:::moniker range="visualstudio"
![Screenshot that shows the allExtensions rule.](media/visualstudio/file-nesting-allextensions.png)

![Screenshot that shows the effect of the allExtensions rule.](media/visualstudio/file-nesting-allextensions-effect.png)
:::moniker-end

:::moniker range="vs-2022"
![allExtensions example rules](media/filenesting_allextensions.png)

![allExtensions example effect](media/filenesting_allextensions_effect.png)
:::moniker-end

* *template.cs* and *template.doc* are nested under *template.tt* because of the **allExtensions** rule.
* *Template.cs* and *Template.doc* are nested under *Template.tt* because of the **allExtensions** rule.

### The fileToFile provider

This provider lets you define file nesting rules based on entire filenames. Consider the following example:

:::moniker range="visualstudio"
![Screenshot that shows a fileToFile rule.](media/visualstudio/file-nesting-filetofile.png)

![Screenshot that shows the effect of the fileToFile rule.](media/visualstudio/file-nesting-filetofile-effect.png)
:::moniker-end

:::moniker range="vs-2022"
![fileToFile example rules](media/filenesting_filetofile.png)

![fileToFile example effect](media/filenesting_filetofile_effect.png)
:::moniker-end

* *.bowerrc* is nested under *bower.json* because of the **fileToFile** rule
* *file.npmrc* is nested under *package.json* because of the **fileToFile** rule.

### Rule order

Expand All @@ -159,13 +242,26 @@ Ordering is also important for rule sections themselves, not just for files with

You can manage all settings, including your own custom settings, through the same button in **Solution Explorer**:


:::moniker range="visualstudio"
![Screenshot that shows the menu items for activating custom file nesting rules.](media/visualstudio/file-nesting-activate-custom.png)
:::moniker-end

:::moniker range="vs-2022"
![Activate custom file nesting rules](media/filenesting_activatecustom.png)
:::moniker-end

## Create project-specific settings

:::moniker range="visualstudio"
You can create solution-specific and project-specific settings by adding a *.filenesting.json* file to the solution root or project root folder.
:::moniker-end

:::moniker range="vs-2022"
You can create solution-specific and project-specific settings through the right-click menu (context menu) of each solution and project:

![Solution and project-specific nesting rules](media/filenesting_solutionprojectspecific.png)
:::moniker-end

Solution-specific and project-specific settings are combined with the active Visual Studio settings. For example, you may have a blank project-specific settings file, but **Solution Explorer** is still nesting files. The nesting behavior is coming from either the solution-specific settings or the Visual Studio settings. The precedence for merging file nesting settings is: Visual Studio > Solution > Project.

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.
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.
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.
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.
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.
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/ide/media/visualstudio/file-nesting.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
28 changes: 10 additions & 18 deletions subscriptions/about-benefits.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,19 @@
---
title: Understand benefits in Visual Studio subscriptions
title: Understand benefits in Visual Studio Subscriptions
author: joseb-rdc
ms.author: amast
ms.manager: shve
ms.date: 12/31/2025
ms.manager: shve
ms.date: 04/28/2026
ms.topic: how-to
description: Explore benefits included in Visual Studio subscriptions, including benefits provided by partners, and how to activate the benefits.
description: Explore benefits included in Visual Studio Subscriptions, including benefits provided by partners, and how to activate the benefits.
---

# About your subscription benefits

> [!div class="nextstepaction"]
> **Get started:** View and activate your benefits in the **Subscriber portal** at https://my.visualstudio.com/benefits

## What's on this page

+ **How benefits differ** based on your subscription level and how they might change over time.
+ **How to browse and filter benefits** by category to quickly find what applies to your subscription.
+ **How partner-provided benefits work**, including variations in duration, support, and availability.

As a Visual Studio subscriber, the benefits available to you depend on your subscription level. Some benefits might change during your subscription as offers are added, updated, or retired.

+ Visual Studio Subscription benefits might change over time, including during the lifetime of an active subscription. We regularly review and update benefits to ensure they remain current and aligned with program goals and partner offerings. As a result, benefits might be added, updated, or discontinued.
As a Visual Studio subscriber, the benefits available to you depend on your subscription level and might change over time, including during the lifetime of an active subscription. We regularly review and update benefits to keep them current and aligned with partner offerings and program requirements. As a result, benefits might be added, updated, or discontinued.

## Benefits vary based on your subscription

Expand All @@ -45,21 +37,21 @@ When you visit <https://my.visualstudio.com/benefits>, all benefits appear by de
## Benefits and offers provided by partners

Some benefits—such as training, tools, and services—are provided by partners. Details for these offers vary. For example:
+ The duration of the benefit might not match the duration of your Visual Studio subscription. You might have a 12-month Visual Studio subscription, while many of the partner-provided benefits might last for a shorter term, such as three or six months.
+ The duration of the benefit might not match the duration of your Visual Studio Subscription. You might have a 12-month Visual Studio Subscription, while many of the partner-provided benefits might last for a shorter term, such as three or six months.
+ Any support available for those benefits or offers is also provided by the partners.
+ Some benefits renew when your Visual Studio subscription is renewed. In other cases, the partner offer is "once in a lifetime" and doesn't renew.
+ Some benefits renew when your Visual Studio Subscription is renewed. In other cases, the partner offer is "once in a lifetime" and doesn't renew.
For more information about individual benefits, check out the corresponding article in the table of contents.
+ Partner-provided benefits are offered and fulfilled at the discretion of the partner. A claim or attempted redemption by a subscriber doesn't guarantee fulfillment; if the partner discontinues or can't provide the benefit, it might not be delivered.

For more information on each benefit, see the corresponding article in the table of contents.

## Benefits that become temporarily unavailable

In rare cases, a benefit might become temporarily unavailable due to technical issues. When such issues happen, the benefit tile in the [Visual Studio subscription portal](https://my.visualstudio.com/benefits) displays **"Temporarily Unavailable"**. The benefit is restored once the issue is resolved.
In rare cases, a benefit might become temporarily unavailable due to technical issues. When such issues happen, the benefit tile in the [Visual Studio Subscription portal](https://my.visualstudio.com/benefits) displays **"Temporarily Unavailable"**. The benefit is restored once the issue is resolved.

## Support resources

For help with sales, subscriptions, accounts, or billing for Visual Studio subscriptions, contact [Visual Studio subscription support](https://aka.ms/vssubscriberhelp).
For help with sales, subscriptions, accounts, or billing for Visual Studio Subscriptions, contact [Visual Studio Subscription support](https://aka.ms/vssubscriberhelp).

## Frequently asked questions

Expand All @@ -83,4 +75,4 @@ A: Some do, others don’t. Check each benefit’s documentation for renewal det

+ Thinking about purchasing a subscription? Check out our pricing page for a detailed list of what benefits are included in each subscription. You can also use the [Visual Studio Subscription benefits page](https://visualstudio.microsoft.com/vs/benefits/) to see more detailed information.
+ Already have a subscription? Learn how to activate and use individual benefits by reviewing benefit-specific articles in our documentation, including help if needed.
+ Want to learn how to get more value from your benefits? Watch the YouTube video "[Get the most of Azure with your Visual Studio subscription](https://www.youtube.com/watch?v=DqKa-hDoCl4)" to explore how your subscription helps you innovate and be more productive.
+ Want to learn how to get more value from your benefits? Watch the YouTube video "[Get the most of Azure with your Visual Studio Subscription](https://www.youtube.com/watch?v=DqKa-hDoCl4)" to explore how your subscription helps you innovate and be more productive.
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.
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.
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