我正在做一些不同的事情,有些使用标签,有些使用2个空格用于缩进,另外用户有4个空格用于缩进等。
在Visual Studio中设置此选项的选项位于工具 - >选项 - >文本编辑器 - >< language> - >选项卡
有没有办法在每个解决方案基础上覆盖这些设置?
答案 0 :(得分:85)
更新:VS 2017原生支持EditorConfig:https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/
在VS 2010及更高版本中,有一个扩展,它根据解决方案/项目根目录中的.editorconfig文件设置缩进:
http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328
答案 1 :(得分:18)
这是实现你所寻找目标的一种方式(不可否认的是hacky):
1)创建一个更改缩进(source)
的宏 Sub Set-Indent(indent As integer)
Dim props As EnvDTE.Properties = DTE.Properties("TextEditor", "C/C++")
Dim ts As EnvDTE.Property = props.Item("TabSize")
Dim ins As EnvDTE.Property = props.Item("IndentSize")
ts.Value = indent
ins.Value = indent
End Sub
2)将您的解决方案加载起来:
在宏浏览器中,选择
EnvironmentEvents
,在第一个下拉列表中选择SolutionEvents
,在第二个下拉列表中选择Opened
。
您现在有一个宏,每次打开解决方案时都会触发。
您只需将解决方案映射到所需的缩进。
答案 2 :(得分:7)
现在还有另一个名为“Rebracer”的加载项......链接在这里:http://visualstudiogallery.msdn.microsoft.com/410e9b9f-65f3-4495-b68e-15567e543c58
答案 3 :(得分:4)
从VS扩展程序EditorConfig(http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328)网站:
EditorConfig项目定义了一种用于配置的简单文件格式 常见的文本编辑器选项,例如缩进尺寸。这些 配置文件旨在与项目的源代码一起使用 代码,允许文本编辑器在逐个文件中使用正确的选项 基础。 EditorConfig项目为许多常见文本提供插件 编辑,使格式完全跨平台。
(强调我的)
完全披露:我无法亲自测试(因为ReSharper接管)。
答案 4 :(得分:2)
VS2017 RC增加了对.editorconfig格式的支持。
答案 5 :(得分:0)
您可以使用props.Item("InsertTabs") = bool
答案 6 :(得分:0)
UPDATE:似乎缩进不是由Resharper管理的,所以这个答案实际上并没有解决具体问题。但是,它确实适用于一般条款;即“Visual Studio,每个解决方案设置”,以防有人在这里偶然发现。
如果您使用Resharper,则可以为解决方案保存格式设置(实际上,任何设置)。您可以进一步指定是否仅适合您(即未提交源控制)或共享解决方案特定设置(即提交源代码控制)。
Resharper > Options > Code Editing > C# (or whatever language) > Formatting Style > Braces Layout
然后在窗口底部,在Save To
下选择“解决方案XYZ个人”(或共享,具体取决于您的目的)。
这将创建一个xml文件YOURSOLUTION.sln.DotSettings.user
,其值为:
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/CASE_BLOCK_BRACES/@EntryValue">NEXT_LINE</s:String>
答案 7 :(得分:0)
因此,接受的解决方案说“你只需要将你的解决方案映射到所需的缩进”,这很好,除了你怎么做?在浪费了大量时间试图解决这个问题后,我发现了一种我更喜欢的方法here。此方法会加载任何数量的导出设置,这些设置可能因每个解决方案而异。设置可以包括任何内容,从缩进到颜色甚至窗口布局(我认为)。
自动添加处理SolutionEvents.Opened事件的代码。将该代码更改为以下内容:
Private Sub SolutionEvents_Opened() Handles SolutionEvents.Opened
Dim item As ProjectItem = DTE.Solution.FindProjectItem("solution.vssettings")
If Not item Is Nothing Then
'MsgBox("Uncomment this to see a message when settings are loaded")
Dim name = item.FileNames(1)
DTE.ExecuteCommand("Tools.ImportandExportSettings", "/import:""" & name & """")
End If
End Sub
保存宏。
如果宏没有运行,可能是因为MS安全补丁。根据{{3}},添加以下字符串:
<AllowDComReflection enabled="true"/>
&lt; runtime&gt;下方标记在以下三个文件中:
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsmsvr.exe.config"
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv.exe.config"
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe.config"
请务必启动用于编辑具有管理员权限的文件的编辑器(即右键单击记事本并选择“以管理员身份运行”)。
我还发现this应该与上面建议的宏做同样的事情,但由于某种原因,在我运行安装程序后它没有做任何事情。
答案 8 :(得分:0)
clang-format为格式化源代码提供了非常复杂的选项。
Visual Studio插件非常简陋,即它不会自动运行,但它可以很好地工作(当手动调用时,就是这样)。