95

我正在做一些不同的事情,有些使用制表符,有些使用 2 个空格作为缩进,另一些用户使用 4 个空格作为缩进等。

在 Visual Studio 中设置此选项的选项位于 Tools->Options->Text Editor-><language>->Tabs

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

4

9 回答 9

97

更新: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

Visual Studio Code也有类似的扩展。

于 2012-07-12T15:47:06.347 回答
20

这是实现您正在寻找的东西的一种(公认的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) 将其与您的解决方案加载挂钩:在宏资源管理器中,选择 EnvironmentEventsSolutionEvents在第一个下拉列表中选择,Opened在第二个下拉列表中选择。您现在有一个宏,每次打开解决方案时都会触发。您只需要将您的解决方案映射到所需的缩进。

于 2009-07-31T12:27:12.833 回答
7

现在还有另一个名为“Rebracer”的加载项......链接在这里:http: //visualstudiogallery.msdn.microsoft.com/410e9b9f-65f3-4495-b68e-15567e543c58

于 2014-08-06T16:27:40.153 回答
4

从 VS 扩展 EditorConfig ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ) 网站:

EditorConfig 项目定义了一种简单的文件格式,用于配置常见的文本编辑器选项,例如缩进大小。这些配置文件旨在与项目的源代码并排放置,允许文本编辑器在逐个文件的基础上使用正确的选项。EditorConfig 项目为许多常见的文本编辑器提供插件,使格式完全跨平台。

(强调我的)

完全披露:我无法亲自测试它(因为 ReSharper 接管了)。

于 2013-09-23T14:22:51.090 回答
2

VS2017 RC 增加了对 .editorconfig 格式的支持。

于 2016-11-28T11:32:58.507 回答
0

您可以设置插入制表符/空格设置props.Item("InsertTabs") = bool

看看这个:https ://github.com/jamesfoster/VS-Whitespace-Macros

于 2012-05-04T10:18:58.220 回答
0

更新:似乎缩进不是由 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 设置 - 仅用于解决方案

于 2013-07-09T14:21:07.977 回答
0

因此,公认的解决方案说“您只需将您的解决方案映射到所需的缩进”,这很好,除了您如何做到这一点?在浪费了很多时间试图弄清楚之后,我在这里找到了一种我更喜欢的方法。此方法加载任意数量的导出设置,这些设置对于每个解决方案都可能不同。设置可以包括任何东西,从缩进到颜色甚至是窗口布局(我认为)。

  • 在 Visual Studio 2008 中,打开工具 > 宏 > 宏资源管理器
  • 双击 MyMacros > Module1(如果您没有 Module1,请右键单击 MyMacros 并选择“新建模块...”来创建它)。
  • 在宏浏览器窗口中,双击左侧的“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
    
  • 保存宏。

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

如果宏没有运行,可能是因为 MS 安全补丁。在此基础上,添加以下字符串:

<AllowDComReflection enabled="true"/>

以下三个文件中的 <runtime> 标记下方:

"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"

确保以管理员权限启动用于编辑这些文件的编辑器(即右键单击记事本并选择“以管理员身份运行”)。

我还发现了一个插件,它应该与上面建议的宏做同样的事情,但由于某种原因,在我运行它的安装程序后它没有做任何事情。

于 2014-05-23T21:02:58.320 回答
0

clang-format 为格式化源代码提供了相当复杂的选项。

Visual Studio 插件非常简陋,即它不会自动运行,但它可以很好地完成工作(即手动调用时)。

http://llvm.org/builds/

于 2016-07-08T08:59:39.247 回答