How Can I Share Visual Studio 2017 Code Style and Formatting? - visual-studio

My team wants to share our code styling and formatting.
We've been using Resharper for this and wanted to take advantage of the new native features in VS2017! What is the best way to do this?

.editorconfig!
Visual Studio 2017 will now respect settings from a .editorconfig file if it exists on disk, up to the project root. Currently this is supported on a per-project basis, not on a solution level (I believe R# may have supported this in the solution folder).
Almost every editor in VS should support basic editorconfig options, such as:
indent_style
indent_size
tab_width
end_of_line
Additionally, some languages also provide support for language-specific style guidelines. For .NET, see here.
Specifically for C# or VB, if you've configured your settings in VS Tools-> Options, there is also an option to generate an .editorconfig file capturing those settings:

Use this extension to generate code style and formatting options that integrate with your source control to effortlessly share solution-level settings.
https://marketplace.visualstudio.com/items?itemName=SchabseSLaks.Rebracer

Related

Export Visual Studio's 'Code Style settings' as .editorconfig

Our team works with Visual Studio 2017 Professional.
I've been trying to unify the Code Style across the team and apparently the industry standard right now is to use .editorconfig files. Even Visual Studio in it's settings windows suggests to use that configuration file and links to a useful page on how to write an editorconfig file.
but I don't want to write all the settings that I already have configured in VS by hand. I would like a tool that exports those settings as a .editorconfig file to distribute them.
I haven't been able to find any tool to do just that so I thought on righting it myself and share it with other people like me. But apparently if go to "Tools -> Import and Export Settings..." you can't download your current Code Style settings.
Is there a way around this?
do you know any tool to convert my settings to an editorconfig file or a way to export my current Code Style settings?
Edit
I have created my own version of the .editorconfig file based on the information found in here
You can find it in my github repo
I realise this isn't much help for VS2017 users, but VS2019 has a button "Generate .editorconfig file from settings" on the Code Style options page:
This options page is available at Tools > Options > Text Editor > [C# or Basic] > Code Style > General.
I know this question is ancient but worth an answer...
The latest Visual Studio extension allows you to do this (Guide here):
Basically install the extension and right click on the solution or project (you can restrict the rules to solution/project or even folder) and click add > new EditorConfig (IntelliCode)
There are still some restrictions about what you can do in the latest releases of Visual Studio, but Visual Studio 2017 15.8 Preview 3 or higher allow you to use a new extended “Format Document” command to perform additional code cleanup for the current document.
It's a shame you can't make all your rules cause build errors, only some of the options allow this - without this, a lot of the styling options can be ignored.

Is there global .editorconfig in Visual Studio 2017

In Visual Studio 2017 we can use .editorconfig file in our project to set code style rules for the project. There is also a list of settings for Visual Studio itself presumably used when there is no editorconfig in the project. Is there a default editorconfig somewhere in Visual Studio that I can replace to set these settings rather than click through each of them?
As pointed out by #gunr2171 there is no .editorconfig file in the Visual Studio settings. However as pointed out by #Hans Passant you could work around the issue by placing an .editorconfig file in the directory where you keep your projects. Because Visual Studio looks up the directory tree to find an .editorconfig with root=true the settings will be applied even though they are outside the directory of the solution.
Visual Studio doesn't have a machine-level .editorconfig file, but it does have machine-level style settings. If you have a .editorconfig file in your solution it will override those particular settings.
From the VS 2017 release notes:
Building on Visual Studio's support for EditorConfig, we worked with the community to add .NET code style settings to the file format. This means that you can configure your team's code style conventions, check them into source control, and have violations appear live in the editor as developers are typing. You can see all the code style options in the Roslyn repo's .editorconfig or in the documentation. You can continue to configure your machine-specific code style settings in Tools > Options > Text Editor > [C#/Basic] > Code Style and these rules are overridden when an EditorConfig is present and conflicts.
Yes, you can do it!, and the best way to do it now is using the EditorConfig Language Service extension.
From the extension's description:
The EditorConfig Project helps developers define and maintain
consistent coding styles between different editors and IDEs.
Visual Studio 2017 natively supports .editorconfig files, but it
doesn't give language support for editing those files. This extension
provides that.
So, you can have default settings in VS 2017 and override them using the .editorconfig file, not only in your solution but also within your solution's projects, and you can have as many .editorconfig files as you like.
Please give it a try !

Resharper uses different code style than Visual Studio

I am using VS2017 RC to write C# and have lately added Resharper Ultimate. However, Resharper Ultimate seems to ignore the code style I have set in Visual Studio and instead use another (probably the default C#) code style. Since Resharper often auto applies its code style, this is very annoying. I verified that it is indeed resharper by doing this:
Select some code, hit Edit -> Advanced -> Format Selection:
This is the visual studio formatter and it formats my code as desired
Select some code, hit Alt+Enter -> Format Selection:
This is Resharper's format command, and it messes up my codestyle.
So my questions are:
How can I tell resharper to use VS's code style?
If this is not possible, then where can I change the code style that resharper uses, so I can at least adjust the code style manually.
Why does Resharper have its own code style in the first place? Wouldn't it make a lot more sense to always use VS's code style?
As for question #3:
Why does Resharper have its own code style in the first place? Wouldn't it make a lot more sense to always use VS's code style?
I haven't compared the features of Resharper with recent Visual Studio versions in depth, but compared with older versions such as VS2010, the Resharper formatting engine is light-years ahead. Much more settings and flexibility to accomplish the formatting you want (and many sane defaults though that could be a matter of opinion of course). It has been enhanced even more in the 2017/2018 releases.
Resharper can also save the formatting settings to several layers of shared configuration files (committed to VCS) to make sure everyone automatically follows the same rules. This also allows for different rules to apply for different projects.

Visual Studio 2010 - recommended extensions [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
This question's answers are a community effort. Edit existing answers to improve this post. It is not currently accepting new answers or interactions.
What are your recommended extensions for Visual Studio 2010?
(Please indicate if its free or not And also its purpose / function too)
Free:
VsCommandBudy - Extend VS with external commands where really need them (Free)
PowerCommands - useful extensions for the Visual Studio 2010 adding additional functionality to various areas of the IDE.
DevExpress CodeRush Xpress - Coding assistance, Intellisense navigation,etc.
AnkhSVN - Subversion Support for Visual Studio.
Ghost Doc - Simplify your XML Comments.
Visual Studio Color Theme Editor - make your VS2010 look pretty with themes.
VsVim - VIM emulation layer for Visual Studio.
DPack - FREE collection of Microsoft Visual Studio tools.
VSFileNav - fast searcher with wildcards + camel case searches.
Sonic file finder - fast and convenient search.
AllMargins
tangible T4 Editor plus modeling tools for VS2010 adds IntelliSense and Syntax Coloring to T4 Text Templates
Word Wrap with Auto-Indent
Indentation Matcher Extension
Structure Adornment
BlockTagger
BlockTaggerImpl
SettingsStore
SettingsStoreImpl
Source Outliner - not available on this link.
Triple Click - Makes triple click select an entire line.
ItalicComments
Go To Definition - Make ctrl+click perform a "Go To Definition" on the identifier under the cursor
Spell Checker - not available on this link.
Remove and Sort Using - Adds a context menu entry to Solution Explorer that sorts and removes using statements on every file in the solution, project, or on the individual file.
Format Document - Adds a context menu entry to Solution Explorer and the code window that executes the Edit-Advance-Format Document command on every file in the solution, project, or current code window.
Open Folder in Windows Explorer - Extends the Open Folder in Windows Explorer context menu option to the code editor and to all files in solution explorer.
Find Results Highlighter - Highlights the search text in the find results windows.
Regular Expressions Margin - A margin which exposes .Net Regular Expressions search and replace capabilities on a given code window.
VSCommands - not available on this link.
HelpViewerKeywordIndex - Visual Studio Extension for the Microsoft Help Viewer
StyleCop - StyleCop analyzes C# source code to enforce a set of best practice style and consistency rules.
Extension Analyzer - Extension Analyzer helps debug issues with VSIX Components, Visual Studio Packages, PkgDef Files and MEF Components.
CodeCompare - Code Compare is an advanced file and folder comparison tool. This programming languages oriented diff tool can be used as a Visual Studio add-in and as a standalone application.
Team Founder Server Power Tools - not available on this link
VS10x Selection Popup - not available on this link
Color Picker Completion - not available on this link
Numbered Bookmarks - Numbered Bookmarks allows users to create and recall bookmarks by using numbers. User can create 10 bookmarks (starting from 0 to 9).
Mouse Zoom - Mouse zoom at the mouse's cursor instead of at the top of the visible document. See VS options...
Visual Studio 2010 Pro Power Tools - A set of extensions to Visual Studio Professional (and above) which improves developer productivity.
JSEnhancements - provides outlining and matching braces highlighting features for Visual Studio JavaScript editor; provides fantastic #region collapsing in JS and CSS files, making long files much easier to handle;
Code Contracts Editor Extensions - Displays Code Contracts (when editing C#) in code, Intellisense, and in metadata files.
WoVS Quick Add Reference - Add missing assembly references right from the code editor
JScript Editor Extensions -
Align By
T4 Editor
Quick Open File for Visual Studio 2010 - quick opening any solution file
CleanProject - Cleans Visual Studio Solutions
PhatStudio - fast file navigation and quickly opening files
VsVim - Vim style keyboard shorcuts
Chutzpah - Open source JavaScript test runner
I Hate #Regions - makes expanded regions less disturbing by making the font smaller
Not Free:
Resharper
Visual Assist X
JustCode
ViEmu
CodeRush with Refactor! Pro
VisualSVN
VS10x Code Map - displays a graphical nested representation of the current editor window code
VS10x Editor View Enhancer
NuGet
NuGet (formerly NuPack) is a free, open source developer focused package management system for the .NET platform intent on simplifying the process of incorporating third party libraries into a .NET application during development.
PowerCommands (free)
AnkhSVN (free)
Even if you use other SVN shells outside VS (like TortoiseSVN), I recommend to install this Source Control Provider to automatically keep track of file renames, deletions and the like.
Visual Assist X(not free)
Ghost Doc (Free)
It takes a while to configure it properly, but it can be quite useful.
From my blog post (all free):
Word Wrap with Auto-Indent
Indentation Matcher Extension
Structure Adornment
This also installs the following extensions:
BlockTagger
BlockTaggerImpl
SettingsStore
SettingsStoreImpl
Source Outliner
Triple Click
ItalicComments
Go To Definition
Spell Checker
Remove and Sort Using
Format Document
Open Folder in Windows Explorer
Find Results Highlighter
Regular Expressions Margin
VSCommands
HelpViewerKeywordIndex
StyleCop
Visual Studio Color Theme Editor
PowerCommands for Visual Studio 2010
Extension Analyzer
CodeCompare
Team Founder Server Power Tools
VS10x Selection Popup
Color Picker Completion
Numbered Bookmarks
DevExpress CodeRush/Refactor! Pro (not free, $249.99)
It's way better than Resharper (which by the way always slowed down my VS to a crawl), it works with C# and VB.NET (including refactoring) and the support and community is excellent. Worth the price tag. And yes, it does support 2010 (in RC at the time of this writing).
Visual Studio Color Theme Editor (free)
I can't code unless my VS2010 has a StackOverflow-like theme.
VisualSVN (not-free)
I personally prefer this over AnkhSVN since its not an SCC provider and doesn't add extra files to my repository.
VisualHG is a Mercurial Source control plugin that drives TortoiseHG from VS. I'm a big fan of Mercurial & DVCS. VisualHG makes it nice n integrated. Git fans - I'm not asking for a flame war. Hg is just my brand.
VSCommands is simply one of the best FREE plugins ot there!
(visual studio gallery link)
DevExpress CodeRush Xpress (free)
tangible T4 Editor plus modeling tools for VS2010 adds IntelliSense and Syntax Coloring to T4 Text Templates (Free)
If you are a Vim aficionado...
VsVim - free
ViEmu - not free (also not yet released)
CodeMaid seems to be pretty useful - it AutoFormats on save which saves a lot of time between developers and code-diffs. (Are there other tools that can use the VS AutoFormat document?)
VS10x Code Map
That is very cool. Easy jumping to property, method. And easy expand collapse region and more.
ReSharper (not-free)
World of VS Default Browser Switcher for easily switching browser in web projects.
Code Contracts Editor Extensions, a free extension which provides information about inherited contracts for the method you're currently working on, and a list of contracts for any methods that you're calling. Unfortunately, the latter feature conflicts with Resharper, but the former still works fine.
RockScroll (free) - Double-click on a word/symbol highlights all occurrences of that word/symbol. Also replaces the scroll bar with a preview of your code, with edit spots and "all occurences" lines highlighted.
Example of use: want to see whether a variable is used anywhere else in current source file? Double-click variable, look at scroll bar for any red highlights.
AtomineerUtils Pro (not free, $9.99 USD) is, in my opinion, better than Ghost Doc. But, just like Ghost Doc or any automatic documentation generator, the generated documentation is meant to be edited to be of any real value.
devColor (Free)
Small tool which underlines hex colors in stylesheets with the correct color. I really like how it integrates into the editor.
CleanProject - Cleans Visual Studio Solutions
How many times have you wanted to send a project to a friend or upload
it to a web site like MSDN Code Gallery only to find that your zip
file has lots of stuff that you don't need to send in it making the
file larger than it needs to be.
bin folder obj folder TestResults folder Resharper folders And then if
you forget about removing Source Control bindings whoever gets your
project will be prompted about that. As someone who does this process
a great deal I decided to share with you my code for cleaning a
project.
I can't live without DPack - especially when working on large projects, makes navigating between files and members much easier. And it's free.
Favorite shortucts:
Alt+U : file browser, filters files as you type
Alt+G : code browser, filters all members as you type
Alt+M : code browser, filters methods in the current file as you type
...and so on. Much easier for me then finding my way around Project Explorer.
Vingy (Free)
Vingy 1.0 is simple, but effective add in for Visual Studio 2010 so that you can search the web in a non intrusive way, and can filter results based on sources.
Vingy http://lh4.ggpht.com/__Mw4iY-4nuY/TKic0LcfKgI/AAAAAAAAA7s/OR82RFQFSU8/s1600-h/image%5B14%5D.png
You can bring up Vingy either by clicking View->Other Windows –> Vingy Search Window from the Visual Studio IDE, or just by high lighting some text in the document and then clicking Tools –> Search Selected Text (Ctrl + 1).
Searching with Vingy is pretty straight forward. You can initiate a Search in two ways.
By typing the text in the Vingy search box and pressing ‘Enter’ or by clicking the ‘Go’ button
By highlighting some text in the editor when you type in Visual Studio, and then pressing Ctrl + 1
This is my list of extensions.
The list on this is pretty comprehensive, so I spent sometime to find the extensions that I need. Here is the snapshot. Hope it will help someone.
I tried installing Codemaid, and it appeared to be a nifty addon, but my Visual Studio response became very slow. Felt like some threads were doing some work all the time when Codemaid was on.
So uninstalling for now.
VSFileNav - (Free) A Find File in Solution tool (cross between SonicFileFinder and Resharper). Lightweight, easy to use and fast (I got sick of the huge startup time with Sonic).
Disclaimer : I wrote this tool.
Plugin to quickly go to any file in solution
Sonic file finder (free)
Fast switching between .h and .cpp file
Macro available here (free)
And that's it =)
WoVS Quick Add Reference
The “Quick Add Reference” extension augments the smart tag that VS shows for unrecognized types giving you a chance to add the corresponding assembly reference for that type plus corresponding “using” clause if needed in a single shot.

How to use different tab settings in different projects in Visual Studio

The Visual Studio options dialog allows you to set tab preferences (size, insert-spaces, etc.) on a per-language basis. But I am regularly working on a couple of c# projects with different settings for these values.
Is there a way to override the global settings on a per-project basis, or at least toggle between them easily?
Another approach may be through the extensibility API: it should be possible to write a macro or add-in that changes these settings.
E.g. to change the tab size to 6, use the following:
DTE.Properties("TextEditor", "CSharp").Item("TabSize").Value = 6
Here's a link that explains how to find out the names of the properties: http://support.microsoft.com/kb/555445
You can open visual studio with a special "reset" settings file which overrides the default settings. Using this method it is possible to create two shortcuts, one with each tab setting. Details are here.
I'm afraid you can't do that on a per-project basis.
But, with Tools/Import and Export Settings... you can export each settings in a file and you could import the one that fits your current project.
Visual studio 2017 adds .editorconfig support, which is very handy for such settings.

Resources