Skip to content

Instantly share code, notes, and snippets.

@madskristensen
Last active August 6, 2023 13:07
Show Gist options
  • Select an option

  • Save madskristensen/7310c0d61694e323f4deeb5a70f35fec to your computer and use it in GitHub Desktop.

Select an option

Save madskristensen/7310c0d61694e323f4deeb5a70f35fec to your computer and use it in GitHub Desktop.

Revisions

  1. madskristensen revised this gist Jun 9, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -5,7 +5,7 @@ Here is a list of things to make sure to remember before publishing your Visual
    Add the [Microsoft.VisualStudio.SDK.Analyzers](https://www.nuget.org/packages/Microsoft.VisualStudio.SDK.Analyzers/) NuGet package to your VSIX project, which will help you discover and fix common violations of best practices regarding threading.

    ## Add high-quality icon
    All extensions should have an icon associated with it. Make sure the icon is a high-quality .png file with the size **128x128** pixels in 96 DPI or more. After adding the icon to your VSIX project, register it in the .vsixmanifest file as both the Icon and Preview image.
    All extensions should have an icon associated with it. Make sure the icon is a high-quality .png file with the size **90x90** pixels in 96 DPI or more. After adding the icon to your VSIX project, register it in the .vsixmanifest file as both the Icon and Preview image.

    ## Name and description
    Studies show that extensions with a short and descriptive name and an accurate description are more likely to be installed by users. Make sure the name reflects the essense of what the extension does. The short description in the .vsixmanifest file should set expectations as to what the extension does. So a brief mention of what problems it solves and what main features it has are key.
  2. madskristensen revised this gist Jul 8, 2019. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -32,7 +32,7 @@ Follow the same design patterns and principles that Visual Studio itself uses. T
    * Don't ever add a new top level menu (next to File, Edit, etc.)
    * No buttons, menus and toolbars should be visible in contexts they don't apply to
    * If [auto load](https://github.com/microsoft/VSSDK-Extensibility-Samples/tree/master/AsyncPackageMigration) is necessary (it probably isn't), do it as late as possible.
    * Use [VisibilityConstraints](https://github.com/Microsoft/VSSDK-Extensibility-Samples/tree/master/VisibilityConstraints) to toggle visibility of commands
    * Use [VisibilityConstraints](https://github.com/Microsoft/VSSDK-Extensibility-Samples/tree/master/VisibilityConstraints) to toggle visibility of commands instead of relying on auto load

    ## Use proper version ranges
    It can be tempting to support versions of Visual Studio all the way back to Visual Studio 2010 to ensure that everyone can use your new extension. The problem with that is that by doing so, it is no longer possible to use any APIs introduced later than that minimum version the extension supports. Often, those new APIs are important and help improve performance and reliability of both your extension as well as Visual Studio itself.
  3. madskristensen revised this gist Jul 8, 2019. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -31,7 +31,7 @@ Follow the same design patterns and principles that Visual Studio itself uses. T

    * Don't ever add a new top level menu (next to File, Edit, etc.)
    * No buttons, menus and toolbars should be visible in contexts they don't apply to
    * If [auto load is](https://github.com/microsoft/VSSDK-Extensibility-Samples/tree/master/AsyncPackageMigration) necessary, do it as late as possible.
    * If [auto load](https://github.com/microsoft/VSSDK-Extensibility-Samples/tree/master/AsyncPackageMigration) is necessary (it probably isn't), do it as late as possible.
    * Use [VisibilityConstraints](https://github.com/Microsoft/VSSDK-Extensibility-Samples/tree/master/VisibilityConstraints) to toggle visibility of commands

    ## Use proper version ranges
  4. madskristensen revised this gist Jul 8, 2019. 2 changed files with 4 additions and 3 deletions.
    5 changes: 3 additions & 2 deletions VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -26,11 +26,12 @@ If the extension collects data such as telemetry or in any other way communicate
    ## Use KnownMonikers when possible
    Visual Studio ships with thousands of icons which are available in the [KnownMonikers](https://msdn.microsoft.com/en-US/library/mt628927.aspx) collection. When adding icons to command buttons, see if you can use the existing KnownMonikers icons since they are part of a design language familiar to the Visual Studio users. Here's a full [list of KnownMonikers](http://glyphlist.azurewebsites.net/knownmonikers/) and grab the [KnownMonikers Explorer](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.knownmonikersexplorer) extension to find the right one for your scenarios.

    ## Don't pollute Visual Studio
    Make sure that all buttons, menus, toolbars and tool windows are only visible by default when the user is in the right context to use them. There are some rules of thumb to follow:
    ## Make it feel native to VS
    Follow the same design patterns and principles that Visual Studio itself uses. This makes the extension feel natural to the users. It also reduces distractions caused by poorly designed UI. Make sure that all buttons, menus, toolbars and tool windows are only visible by default when the user is in the right context to use them. There are some rules of thumb to follow:

    * Don't ever add a new top level menu (next to File, Edit, etc.)
    * No buttons, menus and toolbars should be visible in contexts they don't apply to
    * If [auto load is](https://github.com/microsoft/VSSDK-Extensibility-Samples/tree/master/AsyncPackageMigration) necessary, do it as late as possible.
    * Use [VisibilityConstraints](https://github.com/Microsoft/VSSDK-Extensibility-Samples/tree/master/VisibilityConstraints) to toggle visibility of commands

    ## Use proper version ranges
    2 changes: 1 addition & 1 deletion VSIX-Issue-Template.md
    Original file line number Diff line number Diff line change
    @@ -10,6 +10,6 @@ Follow the [Visual Studio Extensibility Checklist](https://gist.github.com/madsk
    * [ ] Add license
    * [ ] Add privacy notice if applicable
    * [ ] Use KnownMonikers when possible
    * [ ] Don't pollute Visual Studio
    * [ ] Make it feel native to VS
    * [ ] Use proper version ranges
    ```
  5. madskristensen revised this gist Jul 8, 2019. 2 changed files with 10 additions and 9 deletions.
    14 changes: 7 additions & 7 deletions VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -10,16 +10,19 @@ All extensions should have an icon associated with it. Make sure the icon is a h
    ## Name and description
    Studies show that extensions with a short and descriptive name and an accurate description are more likely to be installed by users. Make sure the name reflects the essense of what the extension does. The short description in the .vsixmanifest file should set expectations as to what the extension does. So a brief mention of what problems it solves and what main features it has are key.

    ## Add license
    This license will be shown on the Marketplace, in the VSIX installer and in the Extensions and Updates... dialog. One should always be specified to set the expectations for the users. Use [choosealicense.com](https://choosealicense.com/) to help find the right license for you. The reason it is important is to remove any questions and ambiguity which is important for many Visual Studio users.

    ## Write good Marketplace description
    This is one of the most important things you should do to make your extension successful. A good description consist of:

    * Screenshots/animated GIFs of the UI added by the extension
    * Detailed description of the individual features
    * Links to more details if applicable

    ## Add license
    This license will be shown on the Marketplace, in the VSIX installer and in the Extensions and Updates... dialog. One should always be specified to set the expectations for the users. Use [choosealicense.com](https://choosealicense.com/) to help find the right license for you. The reason it is important is to remove any questions and ambiguity which is important for many Visual Studio users.

    ## Add privacy notice
    If the extension collects data such as telemetry or in any other way communicates with a remote endpoint, add a note about it in the description.

    ## Use KnownMonikers when possible
    Visual Studio ships with thousands of icons which are available in the [KnownMonikers](https://msdn.microsoft.com/en-US/library/mt628927.aspx) collection. When adding icons to command buttons, see if you can use the existing KnownMonikers icons since they are part of a design language familiar to the Visual Studio users. Here's a full [list of KnownMonikers](http://glyphlist.azurewebsites.net/knownmonikers/) and grab the [KnownMonikers Explorer](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.knownmonikersexplorer) extension to find the right one for your scenarios.

    @@ -36,7 +39,4 @@ It can be tempting to support versions of Visual Studio all the way back to Visu
    Here are our recommendations for deciding what versions of Visual Studio to support:

    * Support only the previous and current version of Visual Studio - don't support older versions if possible
    * Don't specify an open ended version range. E.g. `[15.0,)`

    ## Add privacy notice
    If the extension collects data such as telemetry or in any other way communicates with a remote endpoint, add a note about it in the description.
    * Don't specify an open ended version range. E.g. `[16.0,)`. Learn more about [version ranges](https://devblogs.microsoft.com/visualstudio/visual-studio-extensions-and-version-ranges-demystified/).
    5 changes: 3 additions & 2 deletions VSIX-Issue-Template.md
    Original file line number Diff line number Diff line change
    @@ -5,10 +5,11 @@ Follow the [Visual Studio Extensibility Checklist](https://gist.github.com/madsk
    * [ ] Adhere to threading rules
    * [ ] Use high-quality icon
    * [ ] Add license
    * [ ] Add descriptive name and description
    * [ ] Write good Marketplace description
    * [ ] Add license
    * [ ] Add privacy notice if applicable
    * [ ] Use KnownMonikers when possible
    * [ ] Don't pollute Visual Studio
    * [ ] Use proper version ranges
    * [ ] Add privacy notice if applicable
    ```
  6. madskristensen revised this gist Jul 8, 2019. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -11,7 +11,7 @@ All extensions should have an icon associated with it. Make sure the icon is a h
    Studies show that extensions with a short and descriptive name and an accurate description are more likely to be installed by users. Make sure the name reflects the essense of what the extension does. The short description in the .vsixmanifest file should set expectations as to what the extension does. So a brief mention of what problems it solves and what main features it has are key.

    ## Add license
    This license will be shown on the Marketplace, in the VSIX installer and in the Extensions and Updates... dialog. One should always be specified to set the expectations for the users. Use [choosealicense.com](https://choosealicense.com/) to help find the right license for you.
    This license will be shown on the Marketplace, in the VSIX installer and in the Extensions and Updates... dialog. One should always be specified to set the expectations for the users. Use [choosealicense.com](https://choosealicense.com/) to help find the right license for you. The reason it is important is to remove any questions and ambiguity which is important for many Visual Studio users.

    ## Write good Marketplace description
    This is one of the most important things you should do to make your extension successful. A good description consist of:
  7. madskristensen revised this gist Jul 8, 2019. 2 changed files with 3 additions and 3 deletions.
    4 changes: 2 additions & 2 deletions VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,8 +1,8 @@
    # Visual Studio Extensibility Checklist
    Here is a list of things to make sure to remember before publishing your Visual Studio extension.

    ## Adhere to best practices
    Add the [Microsoft.VisualStudio.SDK.Analyzers](https://www.nuget.org/packages/Microsoft.VisualStudio.SDK.Analyzers/) NuGet package to your VSIX project, which will help you discover and fix common violations of best practices
    ## Adhere to threading rules
    Add the [Microsoft.VisualStudio.SDK.Analyzers](https://www.nuget.org/packages/Microsoft.VisualStudio.SDK.Analyzers/) NuGet package to your VSIX project, which will help you discover and fix common violations of best practices regarding threading.

    ## Add high-quality icon
    All extensions should have an icon associated with it. Make sure the icon is a high-quality .png file with the size **128x128** pixels in 96 DPI or more. After adding the icon to your VSIX project, register it in the .vsixmanifest file as both the Icon and Preview image.
    2 changes: 1 addition & 1 deletion VSIX-Issue-Template.md
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,7 @@ This is a template for a GitHub issue you can copy paste directly into a new iss
    ```
    Follow the [Visual Studio Extensibility Checklist](https://gist.github.com/madskristensen/7310c0d61694e323f4deeb5a70f35fec) to ensure it meets the minimum requirements for a high-quality extension.
    * [ ] Adhere to best practices
    * [ ] Adhere to threading rules
    * [ ] Use high-quality icon
    * [ ] Add license
    * [ ] Write good Marketplace description
  8. madskristensen revised this gist May 20, 2019. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -7,6 +7,9 @@ Add the [Microsoft.VisualStudio.SDK.Analyzers](https://www.nuget.org/packages/Mi
    ## Add high-quality icon
    All extensions should have an icon associated with it. Make sure the icon is a high-quality .png file with the size **128x128** pixels in 96 DPI or more. After adding the icon to your VSIX project, register it in the .vsixmanifest file as both the Icon and Preview image.

    ## Name and description
    Studies show that extensions with a short and descriptive name and an accurate description are more likely to be installed by users. Make sure the name reflects the essense of what the extension does. The short description in the .vsixmanifest file should set expectations as to what the extension does. So a brief mention of what problems it solves and what main features it has are key.

    ## Add license
    This license will be shown on the Marketplace, in the VSIX installer and in the Extensions and Updates... dialog. One should always be specified to set the expectations for the users. Use [choosealicense.com](https://choosealicense.com/) to help find the right license for you.

  9. madskristensen revised this gist Apr 12, 2019. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -35,5 +35,5 @@ Here are our recommendations for deciding what versions of Visual Studio to supp
    * Support only the previous and current version of Visual Studio - don't support older versions if possible
    * Don't specify an open ended version range. E.g. `[15.0,)`

    ## Add privacy note
    ## Add privacy notice
    If the extension collects data such as telemetry or in any other way communicates with a remote endpoint, add a note about it in the description.
  10. madskristensen revised this gist Apr 12, 2019. 2 changed files with 5 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -33,4 +33,7 @@ It can be tempting to support versions of Visual Studio all the way back to Visu
    Here are our recommendations for deciding what versions of Visual Studio to support:

    * Support only the previous and current version of Visual Studio - don't support older versions if possible
    * Don't specify an open ended version range. E.g. `[15.0,)`
    * Don't specify an open ended version range. E.g. `[15.0,)`

    ## Add privacy note
    If the extension collects data such as telemetry or in any other way communicates with a remote endpoint, add a note about it in the description.
    1 change: 1 addition & 0 deletions VSIX-Issue-Template.md
    Original file line number Diff line number Diff line change
    @@ -10,4 +10,5 @@ Follow the [Visual Studio Extensibility Checklist](https://gist.github.com/madsk
    * [ ] Use KnownMonikers when possible
    * [ ] Don't pollute Visual Studio
    * [ ] Use proper version ranges
    * [ ] Add privacy notice if applicable
    ```
  11. madskristensen revised this gist Sep 10, 2018. 1 changed file with 1 addition and 2 deletions.
    3 changes: 1 addition & 2 deletions VSIX-Issue-Template.md
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,6 @@
    This is a template for a GitHub issue you can copy paste directly into a new issue on your own repo.

    --------------------------------------------
    ```md
    ```
    Follow the [Visual Studio Extensibility Checklist](https://gist.github.com/madskristensen/7310c0d61694e323f4deeb5a70f35fec) to ensure it meets the minimum requirements for a high-quality extension.
    * [ ] Adhere to best practices
  12. madskristensen revised this gist Sep 10, 2018. 1 changed file with 6 additions and 1 deletion.
    7 changes: 6 additions & 1 deletion VSIX-Issue-Template.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,7 @@
    This is a template for a GitHub issue you can copy paste directly into a new issue on your own repo.

    --------------------------------------------
    ```md
    Follow the [Visual Studio Extensibility Checklist](https://gist.github.com/madskristensen/7310c0d61694e323f4deeb5a70f35fec) to ensure it meets the minimum requirements for a high-quality extension.

    * [ ] Adhere to best practices
    @@ -6,4 +10,5 @@ Follow the [Visual Studio Extensibility Checklist](https://gist.github.com/madsk
    * [ ] Write good Marketplace description
    * [ ] Use KnownMonikers when possible
    * [ ] Don't pollute Visual Studio
    * [ ] Use proper version ranges
    * [ ] Use proper version ranges
    ```
  13. madskristensen revised this gist Sep 10, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion VSIX-Issue-Template.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    Follow the [Visual Studio Extensibility Checklist](https://gist.github.com/madskristensen/7310c0d61694e323f4deeb5a70f35fec) to ensure it meets the minimum requirements for a high-quality extension.

    * [x] Adhere to best practices
    * [ ] Adhere to best practices
    * [ ] Use high-quality icon
    * [ ] Add license
    * [ ] Write good Marketplace description
  14. madskristensen revised this gist Sep 10, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion VSIX-Issue-Template.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    Follow the [Visual Studio Extensibility Checklist](https://gist.github.com/madskristensen/7310c0d61694e323f4deeb5a70f35fec) to ensure it meets the minimum requirements for a high-quality extension.

    * [ ] Adhere to best practices
    * [x] Adhere to best practices
    * [ ] Use high-quality icon
    * [ ] Add license
    * [ ] Write good Marketplace description
  15. madskristensen revised this gist Sep 10, 2018. 3 changed files with 11 additions and 4 deletions.
    2 changes: 0 additions & 2 deletions Issue-template.md
    Original file line number Diff line number Diff line change
    @@ -1,2 +0,0 @@
    [ ] Adhere to best practices
    [ ] Add high-quality icon
    4 changes: 2 additions & 2 deletions VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    # Visual Studio Extension Checklist
    # Visual Studio Extensibility Checklist
    Here is a list of things to make sure to remember before publishing your Visual Studio extension.

    ## Adhere to best practices
    @@ -27,7 +27,7 @@ Make sure that all buttons, menus, toolbars and tool windows are only visible by
    * No buttons, menus and toolbars should be visible in contexts they don't apply to
    * Use [VisibilityConstraints](https://github.com/Microsoft/VSSDK-Extensibility-Samples/tree/master/VisibilityConstraints) to toggle visibility of commands

    ## Version ranges
    ## Use proper version ranges
    It can be tempting to support versions of Visual Studio all the way back to Visual Studio 2010 to ensure that everyone can use your new extension. The problem with that is that by doing so, it is no longer possible to use any APIs introduced later than that minimum version the extension supports. Often, those new APIs are important and help improve performance and reliability of both your extension as well as Visual Studio itself.

    Here are our recommendations for deciding what versions of Visual Studio to support:
    9 changes: 9 additions & 0 deletions VSIX-Issue-Template.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,9 @@
    Follow the [Visual Studio Extensibility Checklist](https://gist.github.com/madskristensen/7310c0d61694e323f4deeb5a70f35fec) to ensure it meets the minimum requirements for a high-quality extension.

    * [ ] Adhere to best practices
    * [ ] Use high-quality icon
    * [ ] Add license
    * [ ] Write good Marketplace description
    * [ ] Use KnownMonikers when possible
    * [ ] Don't pollute Visual Studio
    * [ ] Use proper version ranges
  16. madskristensen revised this gist Sep 10, 2018. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions Issue-template.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,2 @@
    [ ] Adhere to best practices
    [ ] Add high-quality icon
  17. madskristensen revised this gist Sep 10, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -24,7 +24,7 @@ Visual Studio ships with thousands of icons which are available in the [KnownMon
    Make sure that all buttons, menus, toolbars and tool windows are only visible by default when the user is in the right context to use them. There are some rules of thumb to follow:

    * Don't ever add a new top level menu (next to File, Edit, etc.)
    * No buttons, menus and toolbars should be visible when they don't apply
    * No buttons, menus and toolbars should be visible in contexts they don't apply to
    * Use [VisibilityConstraints](https://github.com/Microsoft/VSSDK-Extensibility-Samples/tree/master/VisibilityConstraints) to toggle visibility of commands

    ## Version ranges
  18. madskristensen revised this gist Sep 4, 2018. 1 changed file with 0 additions and 11 deletions.
    11 changes: 0 additions & 11 deletions VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -17,17 +17,6 @@ This is one of the most important things you should do to make your extension su
    * Detailed description of the individual features
    * Links to more details if applicable

    ## Show in Help/About
    All extensions can be present in the **Help -> About Microsoft Visual Studio** dialog box. To do that, add an InstalledProductRegistration attribute to you Package class and make sure the name, description and version are accurate.

    ```c#
    [InstalledProductRegistration("The name", "The description", "1.0")]
    public class MyPackage : AsyncPackage
    {
    ...
    }
    ```

    ## Use KnownMonikers when possible
    Visual Studio ships with thousands of icons which are available in the [KnownMonikers](https://msdn.microsoft.com/en-US/library/mt628927.aspx) collection. When adding icons to command buttons, see if you can use the existing KnownMonikers icons since they are part of a design language familiar to the Visual Studio users. Here's a full [list of KnownMonikers](http://glyphlist.azurewebsites.net/knownmonikers/) and grab the [KnownMonikers Explorer](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.knownmonikersexplorer) extension to find the right one for your scenarios.

  19. madskristensen revised this gist Sep 4, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -43,5 +43,5 @@ It can be tempting to support versions of Visual Studio all the way back to Visu

    Here are our recommendations for deciding what versions of Visual Studio to support:

    * Support only the previous and current version of Visual Studio
    * Support only the previous and current version of Visual Studio - don't support older versions if possible
    * Don't specify an open ended version range. E.g. `[15.0,)`
  20. madskristensen revised this gist Sep 4, 2018. 1 changed file with 12 additions and 2 deletions.
    14 changes: 12 additions & 2 deletions VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -32,6 +32,16 @@ public class MyPackage : AsyncPackage
    Visual Studio ships with thousands of icons which are available in the [KnownMonikers](https://msdn.microsoft.com/en-US/library/mt628927.aspx) collection. When adding icons to command buttons, see if you can use the existing KnownMonikers icons since they are part of a design language familiar to the Visual Studio users. Here's a full [list of KnownMonikers](http://glyphlist.azurewebsites.net/knownmonikers/) and grab the [KnownMonikers Explorer](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.knownmonikersexplorer) extension to find the right one for your scenarios.

    ## Don't pollute Visual Studio
    Make sure that all buttons, menus and toolbars are only visible when the user is in the right context to use them. There are some rules of thumb to follow:
    Make sure that all buttons, menus, toolbars and tool windows are only visible by default when the user is in the right context to use them. There are some rules of thumb to follow:

    * Don't ever add a new top level menu (next to File, Edit, etc.)
    * Don't ever add a new top level menu (next to File, Edit, etc.)
    * No buttons, menus and toolbars should be visible when they don't apply
    * Use [VisibilityConstraints](https://github.com/Microsoft/VSSDK-Extensibility-Samples/tree/master/VisibilityConstraints) to toggle visibility of commands

    ## Version ranges
    It can be tempting to support versions of Visual Studio all the way back to Visual Studio 2010 to ensure that everyone can use your new extension. The problem with that is that by doing so, it is no longer possible to use any APIs introduced later than that minimum version the extension supports. Often, those new APIs are important and help improve performance and reliability of both your extension as well as Visual Studio itself.

    Here are our recommendations for deciding what versions of Visual Studio to support:

    * Support only the previous and current version of Visual Studio
    * Don't specify an open ended version range. E.g. `[15.0,)`
  21. madskristensen revised this gist Sep 4, 2018. 1 changed file with 6 additions and 1 deletion.
    7 changes: 6 additions & 1 deletion VSIX-Checklist.md
    Original file line number Diff line number Diff line change
    @@ -29,4 +29,9 @@ public class MyPackage : AsyncPackage
    ```

    ## Use KnownMonikers when possible
    Visual Studio ships with thousands of icons which are available in the [KnownMonikers](https://msdn.microsoft.com/en-US/library/mt628927.aspx) collection. When adding icons to command buttons, see if you can use the existing KnownMonikers icons since they are part of a design language familiar to the Visual Studio users. Here's a full [list of KnownMonikers](http://glyphlist.azurewebsites.net/knownmonikers/) and grab the [KnownMonikers Explorer](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.knownmonikersexplorer) extension to find the right one for your scenarios.
    Visual Studio ships with thousands of icons which are available in the [KnownMonikers](https://msdn.microsoft.com/en-US/library/mt628927.aspx) collection. When adding icons to command buttons, see if you can use the existing KnownMonikers icons since they are part of a design language familiar to the Visual Studio users. Here's a full [list of KnownMonikers](http://glyphlist.azurewebsites.net/knownmonikers/) and grab the [KnownMonikers Explorer](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.knownmonikersexplorer) extension to find the right one for your scenarios.

    ## Don't pollute Visual Studio
    Make sure that all buttons, menus and toolbars are only visible when the user is in the right context to use them. There are some rules of thumb to follow:

    * Don't ever add a new top level menu (next to File, Edit, etc.)
  22. madskristensen renamed this gist May 2, 2018. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  23. madskristensen revised this gist Apr 30, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion checklist.md
    Original file line number Diff line number Diff line change
    @@ -5,7 +5,7 @@ Here is a list of things to make sure to remember before publishing your Visual
    Add the [Microsoft.VisualStudio.SDK.Analyzers](https://www.nuget.org/packages/Microsoft.VisualStudio.SDK.Analyzers/) NuGet package to your VSIX project, which will help you discover and fix common violations of best practices

    ## Add high-quality icon
    All extensions should have an icon associated with it. Make sure the icon is a high-quality .png file with the size 128x128 pixels in 96 DPI or more. After adding the icon to your VSIX project, register it in the .vsixmanifest file as both the Icon and Preview image.
    All extensions should have an icon associated with it. Make sure the icon is a high-quality .png file with the size **128x128** pixels in 96 DPI or more. After adding the icon to your VSIX project, register it in the .vsixmanifest file as both the Icon and Preview image.

    ## Add license
    This license will be shown on the Marketplace, in the VSIX installer and in the Extensions and Updates... dialog. One should always be specified to set the expectations for the users. Use [choosealicense.com](https://choosealicense.com/) to help find the right license for you.
  24. madskristensen revised this gist Apr 30, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion checklist.md
    Original file line number Diff line number Diff line change
    @@ -8,7 +8,7 @@ Add the [Microsoft.VisualStudio.SDK.Analyzers](https://www.nuget.org/packages/Mi
    All extensions should have an icon associated with it. Make sure the icon is a high-quality .png file with the size 128x128 pixels in 96 DPI or more. After adding the icon to your VSIX project, register it in the .vsixmanifest file as both the Icon and Preview image.

    ## Add license
    This license will be shown on the Marketplace, in the VSIX installer and in the Extensions and Updates... dialog. One should always be specified to set the expectations for the users. Use [chooalicense.com](https://choosealicense.com/) to help find the right license for you.
    This license will be shown on the Marketplace, in the VSIX installer and in the Extensions and Updates... dialog. One should always be specified to set the expectations for the users. Use [choosealicense.com](https://choosealicense.com/) to help find the right license for you.

    ## Write good Marketplace description
    This is one of the most important things you should do to make your extension successful. A good description consist of:
  25. madskristensen revised this gist Apr 30, 2018. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion checklist.md
    Original file line number Diff line number Diff line change
    @@ -28,4 +28,5 @@ public class MyPackage : AsyncPackage
    }
    ```

    ## Use KnownMonikers when possible
    ## Use KnownMonikers when possible
    Visual Studio ships with thousands of icons which are available in the [KnownMonikers](https://msdn.microsoft.com/en-US/library/mt628927.aspx) collection. When adding icons to command buttons, see if you can use the existing KnownMonikers icons since they are part of a design language familiar to the Visual Studio users. Here's a full [list of KnownMonikers](http://glyphlist.azurewebsites.net/knownmonikers/) and grab the [KnownMonikers Explorer](https://marketplace.visualstudio.com/items?itemName=MadsKristensen.knownmonikersexplorer) extension to find the right one for your scenarios.
  26. madskristensen revised this gist Apr 30, 2018. 1 changed file with 9 additions and 1 deletion.
    10 changes: 9 additions & 1 deletion checklist.md
    Original file line number Diff line number Diff line change
    @@ -18,6 +18,14 @@ This is one of the most important things you should do to make your extension su
    * Links to more details if applicable

    ## Show in Help/About
    All extensions can be present in the Help -> About Microsoft Visual Studio dialog
    All extensions can be present in the **Help -> About Microsoft Visual Studio** dialog box. To do that, add an InstalledProductRegistration attribute to you Package class and make sure the name, description and version are accurate.

    ```c#
    [InstalledProductRegistration("The name", "The description", "1.0")]
    public class MyPackage : AsyncPackage
    {
    ...
    }
    ```

    ## Use KnownMonikers when possible
  27. madskristensen revised this gist Apr 30, 2018. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions checklist.md
    Original file line number Diff line number Diff line change
    @@ -18,5 +18,6 @@ This is one of the most important things you should do to make your extension su
    * Links to more details if applicable

    ## Show in Help/About
    All extensions can be present in the Help -> About Microsoft Visual Studio dialog

    ## Use KnownMonikers when possible
  28. madskristensen revised this gist Apr 30, 2018. 1 changed file with 6 additions and 1 deletion.
    7 changes: 6 additions & 1 deletion checklist.md
    Original file line number Diff line number Diff line change
    @@ -10,7 +10,12 @@ All extensions should have an icon associated with it. Make sure the icon is a h
    ## Add license
    This license will be shown on the Marketplace, in the VSIX installer and in the Extensions and Updates... dialog. One should always be specified to set the expectations for the users. Use [chooalicense.com](https://choosealicense.com/) to help find the right license for you.

    ## Write good description
    ## Write good Marketplace description
    This is one of the most important things you should do to make your extension successful. A good description consist of:

    * Screenshots/animated GIFs of the UI added by the extension
    * Detailed description of the individual features
    * Links to more details if applicable

    ## Show in Help/About

  29. madskristensen revised this gist Apr 30, 2018. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions checklist.md
    Original file line number Diff line number Diff line change
    @@ -8,6 +8,7 @@ Add the [Microsoft.VisualStudio.SDK.Analyzers](https://www.nuget.org/packages/Mi
    All extensions should have an icon associated with it. Make sure the icon is a high-quality .png file with the size 128x128 pixels in 96 DPI or more. After adding the icon to your VSIX project, register it in the .vsixmanifest file as both the Icon and Preview image.

    ## Add license
    This license will be shown on the Marketplace, in the VSIX installer and in the Extensions and Updates... dialog. One should always be specified to set the expectations for the users. Use [chooalicense.com](https://choosealicense.com/) to help find the right license for you.

    ## Write good description

  30. madskristensen revised this gist Apr 30, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion checklist.md
    Original file line number Diff line number Diff line change
    @@ -5,7 +5,7 @@ Here is a list of things to make sure to remember before publishing your Visual
    Add the [Microsoft.VisualStudio.SDK.Analyzers](https://www.nuget.org/packages/Microsoft.VisualStudio.SDK.Analyzers/) NuGet package to your VSIX project, which will help you discover and fix common violations of best practices

    ## Add high-quality icon
    All extensions should have an icon associated with it. Make sure the icon is a high-quality .png file with the size 128x128 pixels in 96 DPI or more.
    All extensions should have an icon associated with it. Make sure the icon is a high-quality .png file with the size 128x128 pixels in 96 DPI or more. After adding the icon to your VSIX project, register it in the .vsixmanifest file as both the Icon and Preview image.

    ## Add license