Visual Studio .suo 및 .user 파일을 소스 제어에 추가해야합니까?


841

Visual Studio 솔루션에는 두 가지 유형의 숨겨진 사용자 파일이 있습니다. 하나는 .suo이진 파일 인 솔루션 파일입니다. 다른 하나는 .user텍스트 파일 인 프로젝트 파일입니다. 이 파일에는 어떤 데이터가 포함되어 있습니까?

또한 이러한 파일을 소스 제어 (내 경우에는 Subversion)에 추가해야하는지 궁금합니다. 이 파일을 추가하지 않고 다른 개발자가 솔루션을 체크 아웃하면 Visual Studio가 자동으로 새 사용자 파일을 작성합니까?


9
.suo 파일이 자동으로 다시 만들어집니다. 문제가 발생하면 설정을 '새로 고침'하는 가장 좋은 방법입니다.
CodingBarfield

3
Subversion 및 Visual Studio 프로젝트의 모범 사례 는이 정확한 주제에 대한보다 일반적인 질문입니다. 또한 승인 된 답변 에는 공식 MSDN 문서에 대한 링크가 포함되어 있습니다.이 문서에는 VS 솔루션 / 프로젝트의 파일 / 디렉토리를 소스 제어 시스템에 추가 해야하는 부분과 무시해야 할 부분을 자세히 설명합니다.
Attila Csipak

3
* .suo의 경우 여기를 참조하십시오 : msdn.microsoft.com/en-us/library/bb165909.aspx
smwikipedia

답변:


673

이 파일에는 일반적으로 컴퓨터와 관련된 사용자 기본 설정이 포함되어 있으므로 SCM에 넣지 않는 것이 좋습니다. 또한 VS는 실행할 때마다 거의 변경되므로 항상 SCM에 의해 '변경됨'으로 표시됩니다. 나는 2 년 동안 VS를 사용하는 프로젝트에 포함되어 있으며 아무런 문제가 없었습니다. 유일한 작은 성가심은 디버그 매개 변수 (실행 경로, 배포 대상 등)가 해당 파일 중 하나에 저장되어 있다는 것입니다 (어떤 파일을 모르는 지), 표준이있는 경우 ' 다른 개발자가 전체 개발 환경을 '사용 준비'를 갖도록 SCM을 통해 게시하십시오.


22
suo 파일은 솔루션 내에서 프로젝트가로드 / 언로드되는지에 대한 정보를 저장합니다.
Kugel

5
디버그 정보를 .user 파일에 저장한다고 생각합니다 (적어도 SQL Server Data Tools의 경우). 또한 디버그 탭에서 설정을 변경할 때 항상 .user에게 계속 유지되는 것은 아닙니다 (솔루션을 닫는 것이 약간 짜증나거나 .sqlproj 파일에 저장된 다른 설정을 변경하는 것 같습니다).
jamiebarrow

87
텍스트 편집기에서 .user 및 .csproj 파일을 모두 열 수 있습니다. 방금 .user에서 관련 디버그 설정을 .csproj에 복사하여 붙여 넣은 다음 .user 파일을 삭제하여 테스트했습니다. 디버깅은 계속 작동하면서 .csproj 파일의 새 위치에서 올바른 설정을 즐겁게 읽었습니다. 이것은 .user 파일을 커밋하지 않고 디버그 설정을 커밋하는 방법을 제공해야합니다. 올바른 구성 (디버그, 릴리스 등)으로 배치해야합니다. 내 컴퓨터에서 작동합니다! =)
Chris Nielsen

139

추가 할 필요는 없습니다. 여기에는 사용자 별 설정이 포함되며 다른 개발자는 사본을 원하지 않습니다.


19
여러 다른 컴퓨터에서 직접 작업하는 경우 추가 할 가치가 있습니까?
thepocketwade

33
예상치 못한 시스템 차이로 인해 깨지기 쉬울 수 있습니다. 예를 들어, 직장에서 x64로, 집에서 x86으로 작업하는 경우 "c : \ program files (x86)"및 "c : \ program files"를 질식시킬 수 있습니다. 잘 모르겠지만 위험하지는 않습니다.
Steve Cooper

2
여기에는 사용자 별 정보가 포함되어 있지만 (프로젝트에 포함) 옵션을 통해 새로 추가 된 파일 정보도 .csproj 파일에 있습니다. 다른 사용자는 새로 추가 된 모든 프로젝트 리소스를 수동으로 추가해야합니다. 해결 방법을 아는 사람이 있으면 여기에 언급하십시오.
zeppelin

69

다른 사람들은 왜 소스 제어하에 *.suo*.user파일을 갖는 것이 좋지 않은지 설명했습니다.

다음과 같은 svn:ignore두 가지 이유로이 패턴을 속성에 추가 할 것을 제안합니다 .

  1. 따라서 다른 개발자는 한 개발자의 설정으로 마무리하지 않습니다.
  2. 따라서 상태를 보거나 파일을 커밋 할 때 해당 파일은 코드 기반을 어지럽히 지 않고 추가해야하는 새 파일을 가리지 않습니다.

svn:ignore속성 은 어디서 어떻게 설정됩니까?
Peter Mortensen

@PeterMortensen,이 질문을보십시오 : stackoverflow.com/questions/86049/…
JXG

그러나을 추가 하는 경우 ( 이 답변 참조 )가 .user있으므로 무시하지 않는 것을 선택할 수도 .suo있고 무시할 수도 .user있으므로 의식적으로 추가해야합니다. 그렇게 생각하지 마십시오. 요점은 svn:ignore의식적인 결정이 필요하지 않은 것을 표시하는 것입니다.
PJTraill

49

바이너리 파일 (* .suo)은 커밋하지 않지만 .user 파일은 커밋합니다. .user 파일에는 프로젝트 디버깅을위한 시작 옵션이 포함되어 있습니다. "디버그"탭의 프로젝트 속성에서 시작 옵션을 찾을 수 있습니다. 일부 프로젝트에서 NUnit을 사용하고 프로젝트의 시작 옵션으로 nunit-gui.exe를 구성했습니다. .user 파일이 없으면 각 팀 구성원이 별도로 구성해야합니다.

도움이 되었기를 바랍니다.


4
또한 이것이 사실이어야한다고 생각하기 시작했습니다. 팀의 개발자가 동일한 디버그 설정을 사용하도록 사용자 파일을 커밋하십시오. 표준 방식이 소스 제어의 버전 인 한, 자신의 컴퓨터에서 변경하더라도 여전히 문제가 없습니다.
jamiebarrow

1
다른 사람들은 이것을하지 말 것을 제안했지만 위험이 무엇인지 잘 모르겠습니다. 설정이 정확하지 않은 repo 파일이 사용자의 로컬 복사본을 날려 버릴 수 있습니까? (우리 팀이 BTW, 의욕을 사용하고 있습니다.)
존 쿰즈

2
마이크로 소프트 에 대해 조언 소스 제어에 .user 파일을 추가.
DavidRR

1
디버그 설정을 .csproj로 옮길 수 있습니다. 이 의견
Timbo

26

2011 년에 Google을 통해이 질문 / 답변을 찾았으므로 잠시 시간을내어 Visual Studio 2010에서 만든 * .SDF 파일에 대한 링크를 버전 제어에 추가해서는 안되는 파일 목록에 추가한다고 생각했습니다 ( IDE에서 다시 생성합니다). * .sdf 파일이 다른 곳에서 합법적으로 사용될 수 있는지 확신 할 수 없으므로 SVN의 특정 [projectname] .sdf 파일 만 무시했습니다.

Visual Studio 변환 마법사 2010이 대규모 SDF 데이터베이스 파일을 만드는 이유는 무엇입니까?


2
SDF 파일은 아마도 SQL Server Compact Edition 데이터베이스 일 것 입니다.
Carl G

23

아니요, 말했듯이 사용자별로 다르므로 소스 컨트롤에 추가해서는 안됩니다.

SUO (솔루션 사용자 옵션) : 솔루션을 열 때마다 사용자 정의한 내용이 포함되도록 솔루션과 연결할 수있는 모든 옵션을 기록합니다.

.user 파일은 프로젝트에 대한 사용자 옵션을 포함하고 (SUO는 솔루션을위한 것임) 프로젝트 파일 이름을 확장합니다 (예 : anything.csproj.user는 anything.csproj 프로젝트에 대한 사용자 설정을 포함합니다).


20

이것은 문제에 대한 Microsoft의 의견 인 것으로 보입니다.

소스 제어에 .suo 파일 추가 및 편집

프로젝트에서 왜 DebuggingWorkingDirectory를 suo 파일에 저장하는지 모르겠습니다. 이것이 사용자 별 설정 인 경우 * .proj.user 파일 이름에 저장하는 것을 고려해야합니다. 프로젝트에서 작업하는 모든 사용자가이 설정을 공유 할 수 있으면 프로젝트 파일 자체에 저장하는 것을 고려해야합니다.

소스 제어에 suo 파일을 추가 할 생각조차하지 마십시오! SUO (Soluton 사용자 옵션) 파일은 사용자 별 설정을 포함하기위한 것으로 동일한 솔루션을 사용하는 사용자간에 공유해서는 안됩니다. scc 데이터베이스에 suo 파일을 추가하려는 경우 IDE의 다른 것들을 깨뜨릴 수는 없지만 소스 제어 관점에서 웹 프로젝트 scc 통합을 중단합니다 .LAN 대 인터넷 플러그인 VSS 액세스를 위해 다른 사용자에 의해 scc가 완전히 중단 될 수 있습니다 (유효한 suo 파일에 저장된 VSS 데이터베이스 경로가 다른 사용자에게는 유효하지 않을 수 있음).

알린 콘스탄틴 (MSFT)


또한 MSDN : 솔루션 사용자 옵션 (.Suo) 파일 . 첫 번째 문장은 "솔루션 사용자 옵션 (.suo) 파일에는 사용자 별 솔루션 옵션이 포함되어 있습니다.이 파일은 소스 코드 제어를 위해 체크인해서는 안됩니다."
DavidRR

19

기본적으로 Microsoft의 Visual SourceSafe는 이러한 파일이 사용자 별 설정 파일이므로 소스 컨트롤에 포함되지 않습니다. SVN을 소스 제어로 사용하는 경우 해당 모델을 따릅니다.


12

Visual Studio가 자동으로 생성합니다. 소스 컨트롤에 넣지 않는 것이 좋습니다. 로컬 개발자의 SOU 파일로 인해 VS가 해당 개발자 상자에서 잘못 작동하는 경우가 여러 번있었습니다. 파일을 삭제 한 후 VS가 다시 만들도록 허용하면 항상 문제가 해결되었습니다.


.sou 파일을 남겨두고 패키지를 다시로드하는 데 문제가있었습니다. .sou 파일을 삭제하면 문제가 해결되었습니다. 감사합니다.
메르세데스

11

MSDN 웹 사이트 , 명확한다고

솔루션 사용자 옵션 (.suo) 파일에는 사용자 별 솔루션 옵션이 포함되어 있습니다. 이 파일은 소스 코드 제어를 위해 체크인해서는 안됩니다 .

따라서 소스 제어에 물건을 체크인하는 동안 이러한 파일을 무시하는 것이 안전하다고 말하고 싶습니다.


9

나는하지 않을 것입니다. "사용자"별로 변경 될 수있는 것은 일반적으로 소스 제어에 좋지 않습니다. .suo, .user, obj / bin 디렉토리


8

이러한 파일은 사용자 고유의 옵션이며 솔루션 자체와 무관해야합니다. Visual Studio는 필요에 따라 새로운 것을 만들므로 소스 제어를 위해 체크인 할 필요가 없습니다. 실제로 개별 개발자가 자신의 환경에 맞게 환경을 사용자 정의 할 수 있기 때문에 바람직하지 않을 것입니다.


7

.user 파일은 사용자별로 다르므로 소스 제어 할 수 없습니다. 그것은 원격 컴퓨터의 이름과 다른 사용자 의존적 인 것들을 포함합니다. vcproj 관련 파일입니다.

.suo 파일은 sln 관련 파일이며 "솔루션 사용자 옵션"(스타트 업 프로젝트, 윈도우 위치 (도킹 된 위치 및 떠있는 곳) 등)을 포함합니다.

이진 파일이며 "사용자 관련"이 포함되어 있는지 알 수 없습니다.

우리 회사에서는 이러한 파일을 소스 제어하에 가져 가지 않습니다.


7

여기에는 일반적으로 단일 개발자에게 할당 된 프로젝트에 대한 특정 설정이 포함됩니다 (예 : 애플리케이션을 디버깅 할 때 시작하는 시작 프로젝트 및 시작 페이지 등).

따라서 버전 제어에 추가하지 않는 것이 좋습니다 .VS는 다시 작성하여 각 개발자가 원하는 특정 설정을 가질 수 있습니다.


5

.user는 사용자 설정이며 .suo는 솔루션 사용자 옵션이라고 생각합니다. 이 파일들을 소스 제어 하에서 원하지 않습니다. 각 사용자마다 다시 작성됩니다.



4

Rational ClearCase를 사용 하면 대답은 '아니오'입니다. 소스 코드 제어에는 .sln &. * proj 만 등록해야합니다.

다른 공급 업체에 대해서는 답변을 드릴 수 없습니다. 올바르게 기억한다면,이 파일들은 사용자 환경에 따라 "사용자"옵션입니다.


only the .sln & .*proj should be registered-여기에서 많은 파일을 잊지 않았습니까?
Wolf

@Wolf는 명백한 것 외에
Polluks

3

해당 파일을 버전 관리에 추가하지 마십시오. 이 파일은 버전 관리에 체크인하면 다른 워크 스테이션에서 문제를 일으킬 수있는 워크 스테이션 특정 정보로 자동 생성됩니다.


2

아니요. 개발자 / 기계 별 로컬 설정이므로 소스 제어에 전념해서는 안됩니다.

GitHub는 Visual Studio 사용자가 https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 에서 무시하도록 제안 된 파일 형식 목록을 유지 관리합니다.

svn의 경우 다음 global-ignore속성 세트가 있습니다.

* .DotSettings.User
* .onetoc2
* .suo
.vs
사전 컴파일 된 웹
thumbs.db
obj
bin
디버그
* .user
* .vshost. *
* .tss
* .dbml.layout


1

ProjectProperties> Debugging> Environment 에서 실행 파일 디렉토리 종속성을 설정 하면 경로는 '.user'파일에 저장됩니다.

위에서 언급 한 필드에이 문자열을 설정 했다고 가정합니다. "PATH = C : \ xyz \ bin" '.user'파일에 저장되는 방법입니다.

<LocalDebuggerEnvironment>PATH=C:\xyz\bin$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>

이것은 OpenCV에서 일하는 동안 많은 도움이되었습니다. 프로젝트마다 다른 버전의 OpenCV를 사용할 수 있습니다. 또 다른 장점은 새 컴퓨터에서 프로젝트를 설정하는 것이 매우 쉽다는 것입니다. 우리는 해당 의존성 dirs를 복사해야했습니다. 따라서 일부 프로젝트의 경우 소스 제어에 '.user'를 추가하는 것을 선호합니다.

그럼에도 불구하고 전적으로 프로젝트에 의존합니다. 필요에 따라 전화를 걸 수 있습니다.


심볼릭 링크는 이러한 목적으로도 잘 작동합니다.
sɐunıɔ ןɐ qɐp

1

으로는 다른 답변에서 설명, 모두 .suo.user그들이 (BTW 사용자 / 기계 별이기 때문에, 소스 제어에 추가 할 수 없습니다해야 .suoVS의 최신 버전 전용 임시 디렉토리로 이동 한 .vs완전히 소스 제어 곳에 보관해야한다).

그러나 응용 프로그램이 VS에서 디버깅하기 위해 환경 설정이 필요한 경우 (이러한 설정은 일반적으로 .user파일로 유지됨 ) 샘플 파일을 준비하고 (같은 이름을 지정 .user.SAMPLE) 참조를 위해 소스 제어에 추가하는 것이 편리 할 수 ​​있습니다 .

이러한 파일에서 하드 코딩 된 절대 경로 대신 상대 경로를 사용하거나 환경 변수에 의존하는 것이 합리적이므로 다른 사람이 쉽게 재사용 할 수있을 정도로 일반적인 샘플 일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.