생성자에 대한 Visual Studio의 개인 필드 생성 바로 가기를 사용자 지정하려면 어떻게합니까?


120

VS 2017 (및 아마도 이전 버전)은 private readonly필드 를 생성 하고 할당 하는이 편리한 작은 생성자 바로 가기를 제공 합니다.

스크린 샷 :

여기에 이미지 설명 입력

이렇게하면라는 개인 멤버가 생성 userService되고 다음과 같이 할당됩니다.

this.userService = userService;

이것은 내가 사용하는 코드 스타일에 위배됩니다. 모든 개인 멤버의 이름을 접두사 _로 지정하면 다음과 같은 할당이됩니다.

_userService = userService;

VS가 코드 생성 바로 가기를 사용하여이 코드 스타일 규칙을 따르도록하려면 어떻게해야합니까?


스 니펫과는 아무 관련이 없으며이 기능은 코드 분석 서비스에서 제공합니다. Roslyn이 추가 된 이후 사용할 수 있습니다. 맨 앞의 밑줄은 .NET Framework 프로그래밍 가이드 라인을 위반하는 것이며 Microsoft 프로그래머에게이를 변경하도록 지시하지 않습니다. 그것은 Resharper가 추진 한 스타일입니다. this.프로그래머가 그것을 사지 않기 때문에 그들은 그것을 좋아하지 않습니다 . 사용을 고려하십시오.
Hans Passant

18
@HansPassant Microsoft 팀에서 생성 한 모든 최신 코드 _camelCase는 개인 구성원을 위해이 규칙을 따릅니다 . 참고 항목 스타일 가이드 라인 코딩 CoreFX C 번호 , 스타일 코딩 ASP.NET 코어 , 심지어 Rosyln 코드 자체를 ... ??
kspearrin

5
@HansPassant 좋은 소식 ... 누군가 Microsoft 프로그래머에게 이것을 변경할 수 있도록 성공적으로 이야기했습니다. 아래 답변을 참조하십시오.
kspearrin

Mac 용 Visual Studio에서이 작업을 수행하는 방법을 아십니까?
Jason V

답변:


229

이는 Visual Studio에서 직접 수행 할 수도 있습니다. 로 이동하십시오 Tools -> Options -> Text Editor -> C# -> Code Style -> Naming.

  1. 먼저 "이름 지정 스타일 관리"버튼을 클릭하여 새 이름 지정 스타일을 정의해야합니다.

VS2017 이름 지정 스타일 대화 상자

  1. 그런 다음 + 기호를 클릭하여 새 이름 지정 스타일을 사용하는 "비공개 또는 내부 필드"에 대한 새 규칙을 정의합니다.

VS2017 옵션 대화 상자

  1. Visual Studio 다시 시작

  2. 그 후 "필드 생성 및 초기화"리팩토링을 적용하면 선행 밑줄로 이름이 지정됩니다.


저는 Visual Studio 15.8.8을 사용 중이며 이것이 저에게 도움이 된 유일한 답변이었습니다.
Jonathan Taylor

25
참고 :이 후에 VS를 다시 시작해야 할 수 있습니다.
Jeff

9
VS 2019에서 잘 작동합니다.
Matt Stannett

3
모든 영웅이 망토를 착용하는 것은 아닙니다. 훌륭한 설명. 잘 작동합니다! 고마워.
datoml '1911.22

1
VS 2019 버전 16.5.4에서 다시 시작할 필요 없음
Douglas HM

32

.editorconfig 설정은 kspearrin의 대답이 나를 위해 작동하지 않았다는 것입니다 (VS2017 버전 15.4.0의 경우).

[*.{cs,vb}]
dotnet_naming_rule.private_members_with_underscore.symbols  = private_fields
dotnet_naming_rule.private_members_with_underscore.style    = prefix_underscore
dotnet_naming_rule.private_members_with_underscore.severity = suggestion

dotnet_naming_symbols.private_fields.applicable_kinds           = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private

dotnet_naming_style.prefix_underscore.capitalization = camel_case
dotnet_naming_style.prefix_underscore.required_prefix = _

나는 여기에서 이것을 얻었다 : https://github.com/dotnet/roslyn/issues/22884#issuecomment-358776444


기묘한. 지금은 VS 2017 15.6을 사용하고 있으며 원래 답변은 여전히 ​​작동하는 것 같습니다. 누가 ... 알고있다
kspearrin

나는 15.6.3으로 업데이트했고이 버전은 여전히 ​​작동합니다. 저는 Community Edition을 사용하고 있습니다. 그렇지 않습니까?
michael_hook

난 프로 2017 버전 15.6.4 VS 사용하고 작업 중 하나를 얻을 수
에릭 슈나이더


이것은 받아 들인 대답이 아닐 때 나를 위해 일했습니다. VS Pro 15.7.5
Licht

24

이는 고유 한 Roslyn 코드 분석기 명명 규칙을 생성하여 달성 할 수 있습니다. .editorconfig솔루션에를 추가하여 사용자 지정 명명 규칙을 지정합니다.

https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference 에서 자세히 알아보세요.

질문에서 원하는 효과를 얻으려면 다음이 작동합니다.

[*.{cs,vb}]
dotnet_naming_rule.private_members_with_underscore.symbols  = private_fields
dotnet_naming_rule.private_members_with_underscore.style    = prefix_underscore
dotnet_naming_rule.private_members_with_underscore.severity = suggestion

dotnet_naming_symbols.private_fields.applicable_kinds           = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
dotnet_naming_symbols.private_fields.required_modifiers         = readonly

dotnet_naming_style.prefix_underscore.capitalization = camel_case
dotnet_naming_style.prefix_underscore.required_prefix = _

결과:

여기에 이미지 설명 입력


이 작업을 수행하는 데 먼 길인 것 같습니다. @Maciek의 응답을 참조하십시오.
Eric

이것이 내가 원래 대답했을 때 돌아 오는 유일한 방법이었습니다. 지금 UI를 추가 한 것 같습니다.
kspearrin

1
.editorconfig 편집은 UI를 통해 수행하는 것보다 훨씬 더 좋은 솔루션입니다.
gliljas

@Eric 그 반대입니다. 팀의 모든 구성원에게 특정 방식 으로 VS 를 수동 으로 구성하도록 지시 하는 .editorconfig것은 Git 에서 파일을 체크인하고 그 순간부터 모든 사람이 자동으로 설정을 따르도록 조정
Daniel Liuzzi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.