Visual Studio,每个解决方案缩进设置

时间:2009-07-31 11:44:01

标签: visual-studio-2008 indentation

我正在做一些不同的事情,有些使用标签,有些使用2个空格用于缩进,另外用户有4个空格用于缩进等。

在Visual Studio中设置此选项的选项位于工具 - >选项 - >文本编辑器 - >< language> - >选项卡

有没有办法在每个解决方案基础上覆盖这些设置?

9 个答案:

答案 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

还有类似的extension for Visual Studio Code

答案 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

设置“插入标签/空格”设置

检查出来:https://github.com/jamesfoster/VS-Whitespace-Macros

答案 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>

Resharper Settings - Save for Solution Only

答案 7 :(得分:0)

因此,接受的解决方案说“你只需要将你的解决方案映射到所需的缩进”,这很好,除了你怎么做?在浪费了大量时间试图解决这个问题后,我发现了一种我更喜欢的方法here。此方法会加载任何数量的导出设置,这些设置可能因每个解决方案而异。设置可以包括任何内容,从缩进到颜色甚至窗口布局(我认为)。

  • 在Visual Studio 2008中,打开工具&gt;宏&gt;宏探险家
  • 双击MyMacros&gt; Module1(如果您没有Module1,请右键单击MyMacros并选择'New module ...'来创建它)。
  • 在宏浏览器窗口中,双击左侧的“EnvironmentEvents”。
  • 在左上角的下拉列表中,选择“SolutionEvents”。
  • 在右上角的下拉列表中,选择“已打开”。
  • 自动添加处理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
    
  • 保存宏。

  • 使用工具&gt;用于更改UI以使用标签设置以及您想要设置的任何其他内容的选项。
  • 工具&gt;导入和导出设置...&gt;导出所选环境设置&gt;下一步
  • 要导出标签设置,请取消选中“所有设置”,然后选中选项&gt;文本编辑器&gt; C / C ++
  • 单击“下一步”,然后键入“solution.vssettings”为“您要为设置文件命名什么?”并将文件保存到您想要使用这些设置的解决方案的任何位置。
  • 将solution.vssettings拖到“解决方案资源管理器”窗口中的任意位置。
  • 退出Visual Studio,下次打开包含solution.vssettings的解决方案时,应加载这些设置。

如果宏没有运行,可能是因为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插件非常简陋,即它不会自动运行,但它可以很好地工作(当手动调用时,就是这样)。

http://llvm.org/builds/