나는 몇 가지 다른 일을하고 있으며 일부는 탭을 사용하고 일부는 들여 쓰기에 2 개의 공백을 사용하고 다른 사용자는 들여 쓰기에 4 개의 공백을 사용합니다.
Visual Studio에서이를 설정하는 옵션은 도구-> 옵션-> 텍스트 편집기-> <언어>-> 탭에 있습니다.
솔루션 기반에서 이러한 설정을 재정의하는 방법이 있습니까?
나는 몇 가지 다른 일을하고 있으며 일부는 탭을 사용하고 일부는 들여 쓰기에 2 개의 공백을 사용하고 다른 사용자는 들여 쓰기에 4 개의 공백을 사용합니다.
Visual Studio에서이를 설정하는 옵션은 도구-> 옵션-> 텍스트 편집기-> <언어>-> 탭에 있습니다.
솔루션 기반에서 이러한 설정을 재정의하는 방법이 있습니까?
답변:
다음은 원하는 것을 달성하는 한 가지 방법입니다.
1) 들여 쓰기를 변경하는 매크로 만들기 ( 소스 )
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
에서 두 번째 드롭 다운을 선택 합니다. 이제 솔루션을 열 때마다 트리거되는 매크로가 있습니다. 솔루션을 필요한 들여 쓰기에 매핑하기 만하면됩니다.
업데이트 : 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에 대한 유사한 확장 도 있습니다 .
.sln
파일 과 동시에)에 넣을 때 각 프로젝트 폴더에서만 작동하도록 할 수 없습니다 . 또한 지원 indent_brace_style
합니까?
"Rebracer"라는 또 다른 추가 기능도 있습니다 ... 링크는 다음과 같습니다. http://visualstudiogallery.msdn.microsoft.com/410e9b9f-65f3-4495-b68e-15567e543c58
VS 확장 EditorConfig ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ) 웹 사이트에서 :
EditorConfig 프로젝트는 들여 쓰기 크기와 같은 일반적인 텍스트 편집기 옵션을 구성하기위한 간단한 파일 형식을 정의 합니다 . 이러한 구성 파일은 프로젝트의 소스 코드와 함께 배치되도록 설계되어 텍스트 편집기가 파일별로 올바른 옵션을 사용할 수 있도록합니다. EditorConfig 프로젝트는 여러 일반 텍스트 편집 기용 플러그인을 제공하여 형식을 완전히 교차 플랫폼으로 만듭니다.
(강조 광산)
전체 공개 : ReSharper가 인수했기 때문에 개인적으로 테스트 할 수 없었습니다.
다음을 사용하여 탭 / 공백 삽입 설정을 지정할 수 있습니다. props.Item("InsertTabs") = bool
이것을 확인하십시오 : https://github.com/jamesfoster/VS-Whitespace-Macros
업데이트 : Resharper에서 들여 쓰기가 관리되지 않는 것처럼 보이 므로이 답변은 실제로 특정 질문을 해결하지 않습니다. 그러나 일반 용어로 적용됩니다. 즉 "Visual Studio, 솔루션 별 설정" 을 찾는 사람이 여기에서 우연히 발견되는 경우를 대비하여.
Resharper 를 사용 하는 경우 솔루션에 대해서만 서식 설정 (실제로 모든 설정)을 저장할 수 있습니다. 자신만을위한 것인지 (즉, 소스 제어에 전념하지 않음) 또는 공유 솔루션 별 설정 (즉, 소스 제어에 전념)을 추가로 지정할 수 있습니다.
Resharper > Options > Code Editing > C# (or whatever language) > Formatting Style > Braces Layout
그런 다음 창 하단의 Save To
"Solution XYZ personal"(또는 목적에 따라 공유)을 선택합니다.
다음 YOURSOLUTION.sln.DotSettings.user
과 같은 값을 가진 xml 파일이 생성 됩니다.
<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>
CTRL+Q
)을 사용하고 "Tabs"를 입력하여 사용 가능한 모든 언어 설정으로 바로 이동할 수 있다는 것입니다.
그래서, 받아 들여진 솔루션은 "당신은 당신의 솔루션을 필요한 들여 쓰기에 매핑하기 만하면됩니다"라고 말합니다. 어떻게 하는지를 제외하고는 훌륭합니다. 그것을 알아 내기 위해 많은 시간을 낭비한 후 여기서 선호하는 방법을 찾았 습니다 . 이 방법은 모든 솔루션에 대해 다를 수있는 내 보낸 설정을 원하는만큼로드합니다. 설정에는 들여 쓰기부터 색상 또는 창 레이아웃까지 모든 것이 포함될 수 있습니다 (제 생각에).
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 보안 패치 때문일 수 있습니다. 을 바탕으로 이 다음 문자열을 추가 :
<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"
관리자 권한으로 해당 파일을 편집하는 데 사용하는 편집기를 시작해야합니다 (예 : 메모장을 마우스 오른쪽 단추로 클릭하고 '관리자 권한으로 실행'선택).
또한 위에서 제안한 매크로와 동일한 작업을 수행해야하는 플러그인 을 찾았 지만 어떤 이유로 설치 프로그램을 실행 한 후에는 아무 작업도 수행하지 않았습니다.
clang-format은 소스 코드 형식을 지정하기위한 매우 정교한 옵션을 제공합니다.
Visual Studio 플러그인은 아주 초보적입니다. 즉, 자동으로 실행되지는 않지만 작업을 잘 수행합니다 (수동으로 호출 할 때).