.sln을 소스 제어에 적용해야합니까?


101

.sln 파일을 소스 제어에 커밋하는 것이 가장 좋은 방법입니까? 그렇게하는 것이 적절하거나 부적절합니까?

업데이트 답변에는 몇 가지 좋은 점이 있습니다. 응답 해 주셔서 감사합니다!


21
커밋하고 싶지 않은 .SUO 파일이라고 생각합니다.
apandit 2009-06-23

기록을 위해 작업 목록 (사용하는 경우)이 .SUO 파일에 저장되어 있다고 믿습니다. 따라서 소스 제어에 커밋하고 싶지는 않지만 '그냥 삭제'하고 싶지 않을 수도 있습니다. 외부 껍데기.
Benjol

답변:


69

다른 답변에서 솔루션 파일이 유용하고 공식 빌드에 사용되지 않더라도 커밋되어야한다는 것이 분명하다고 생각합니다. 정의 / 선언으로 이동과 같은 Visual Studio 기능을 사용하는 모든 사용자에게 편리합니다.

기본적으로 절대 경로 또는 기타 시스템 특정 아티팩트는 포함하지 않습니다. (안타깝게도 일부 추가 기능 도구 (예 : AMD CodeAnalyst)는이 속성을 제대로 유지하지 못합니다.) 프로젝트 파일 (C ++ 및 C # 모두)에서 상대 경로를 사용하는 데주의를 기울이면 해당 도구는 시스템과 무관합니다. 너무.

아마도 더 유용한 질문은 다음과 같습니다. 어떤 파일을 제외해야합니까? 내 VS 2008 프로젝트에 대한 내 .gitignore 파일의 내용은 다음과 같습니다.

*.suo
*.user
*.ncb
Debug/
Release/
CodeAnalyst/

(마지막 항목은 AMD CodeAnalyst 프로파일 러용입니다.)

VS 2010의 경우 다음도 제외해야합니다.

ipch/
*.sdf
*.opensdf

2
또한 단위 테스트 결과에 대한 무시 규칙이 있습니다. 어떤 사람들은 그들을 확인할 수 있지만 나는 혼란 싫어
마태 복음 회칠을

9
+1 - 내가 개인적으로도 구축됩니다 것을, 따라서 빈 / 및 OBJ / 커밋하지 않습니다
스티븐 에버스

두 개 이상의 프로젝트가 포함 된 .sln 파일 만 커밋합니다
Justin

2
여기 내 Subversion Global ignore patter : * .vsmdi * .suo * / [Bb] in [Bb] in * / obj obj TestResults *. [Uu] ser * Thumbs.db * Web.Publish.xml * WebApplication.Publish. xml * Web.log
Merritt

다음 은 인기있는 Visual Studio 추가 기능에서 생성 된 임시 파일, 빌드 결과 및 파일을 포함하는 일반적으로 공유되는 .gitignore 파일입니다.
Lauren Van Sloun

58

예-항상 적절하다고 생각합니다. 사용자 별 설정은 다른 파일에 있습니다.


3
확실히 .sln에는 .prj 파일 (프로젝트)에 대한 참조가 있습니다
dplante

20

네,해야합니다. 솔루션 파일에는 솔루션의 전체 구조에 대한 정보 만 포함됩니다. 정보는 솔루션 전체에 적용되며 프로젝트의 모든 개발자에게 공통적 일 수 있습니다.

사용자 별 설정은 포함되어 있지 않습니다.


13

당신은 확실히 그것을 가져야합니다. 다른 사람들이 언급 한 이유 외에도 전체 프로젝트의 한 단계 빌드를 가능하게하는 것이 필요합니다.


8

나는 일반적으로 솔루션 파일을 체크인해야한다는 데 동의하지만, 내가 일하는 회사에서 다른 일을했습니다. 우리는 상당히 큰 저장소를 가지고 있으며 개발자는 때때로 시스템의 다른 부분에서 작업합니다. 우리가 일하는 방식을 지원하기 위해 우리는 하나의 큰 솔루션 파일 또는 여러 개의 작은 파일을 가질 것입니다. 둘 다 몇 가지 단점이 있으며 개발자 측에서 수동 작업이 필요합니다. 이를 피하기 위해 우리는 모든 것을 처리하는 플러그인을 만들었습니다.

플러그인을 사용하면 각 개발자가 저장소에서 관련 프로젝트를 선택하기 만하면 작업 할 소스 트리의 하위 집합을 확인할 수 있습니다. 그런 다음 플러그인은 솔루션 파일을 생성하고 주어진 솔루션에 대해 즉시 프로젝트 파일을 수정합니다. 또한 참조를 처리합니다. 즉, 개발자가해야 할 일은 적절한 프로젝트를 선택하고 필요한 파일을 생성 / 수정하는 것입니다. 이를 통해 회사 표준을 보장하기 위해 다양한 기타 설정을 사용자 지정할 수 있습니다.

또한 플러그인을 사용하여 다양한 체크인 정책을 지원하므로 일반적으로 사용자가 결함이 있거나 규정을 준수하지 않는 코드를 저장소에 제출하는 것을 방지합니다.


오랫동안 답하지 못한 질문 중 하나 ( stackoverflow.com/questions/1490728/… )에 대한 답인 것처럼 들리지만 ,이 플러그인의 사본을 얻을 가능성이 있습니까?
Benjol

@Benjol : 죄송합니다. 내부 도구가 아닙니다. 위의 기능 외에도 많은 다른 내부 시스템과 통합되므로 우리가 작업을 실행하는 방법에 매우 구체적입니다. 솔루션 / 프로젝트 부분 만 필요한 경우 구현하기가 어렵지 않습니다.
Brian Rasmussen

좋아요, 한 가지만, '큰 솔루션'에 프로젝트 참조 또는 파일 참조가 있습니까? 개발자가 파일 / 프로젝트에 대한 새 참조를 추가하면 플러그인이 체크인하기 전에 적절한 변환을 다시 수행합니까? 개발자가 체크 아웃하지 않은 종속성을 어떻게 처리합니까?
Benjol

8

예, 커밋해야 할 사항은 다음과 같습니다.

  • 솔루션 (* .sln),
  • 프로젝트 파일,
  • 모든 소스 파일,
  • 앱 구성 파일
  • 빌드 스크립트

커밋 하지 말아야 할 사항 은 다음과 같습니다.

  • 솔루션 사용자 옵션 (.suo) 파일,
  • 생성 된 파일 빌드 (예 : 빌드 스크립트 사용) [편집 :] -필요한 모든 빌드 스크립트와 도구를 버전 제어하에 사용할 수있는 경우에만 (빌드가 cvs 기록에서 인증되었는지 확인하기 위해)

다른 자동 생성 파일과 관련하여 별도의 스레드가 있습니다.


1
"자동으로 생성 된 파일"에 동의하지 않습니다.
Mehrdad Afshari

@Mehrdad Intelisense 파일도 커밋되어야한다고 생각하십니까?
Edison Gustavo Muenz

1
@Edison : 아니요. 예를 들어 LINQ to SQL 데이터 컨텍스트와 같은 자동 생성 소스 파일을 참조하고 있습니다.
Mehrdad Afshari

2
Formname.Designer.cs 파일이 자동으로 생성 된 것으로 간주되지 않습니까?
jasonh

1
내가 의미하는 것은 빌드 시간 동안 생성 된 파일입니다. 나는 이것을 자주 발견합니다-누군가 자동으로 빌드 된 파일을 커밋 한 다음 SVN이 일부 주석이 변경 되었기 때문에 변경 사항을보고합니다.
Groo

5

예, 소스 제어의 일부 여야합니다. 응용 프로그램에서 프로젝트를 추가 / 제거 할 때마다 .sln이 업데이트되고 소스 제어하에 두는 것이 좋습니다. 애플리케이션 코드 2 버전을 다시 꺼내 직접 빌드를 수행 할 수 있습니다 (필요한 경우).


5

대부분의 경우 .sln 파일을 소스 제어에 커밋하는 것이 좋습니다.

.sln 파일이 다른 도구 (예 : CMake)에 의해 생성 된 경우 소스 제어에 넣는 것이 부적절 할 수 있습니다.


4

예, 항상 .sln 파일을 포함하려고합니다. 여기에는 솔루션에있는 모든 프로젝트에 대한 링크가 포함됩니다.


2

모든 것을 동기화 상태로 유지하기 때문에 그렇게합니다. 필요한 모든 프로젝트가 함께 위치하며 아무도 하나를 놓치는 것에 대해 걱정할 필요가 없습니다. 우리의 빌드 서버 (Ant Hill Pro)는 또한 sln을 사용하여 릴리스를 위해 빌드 할 프로젝트를 파악합니다.


2

우리는 일반적으로 모든 솔루션 파일을 솔루션 디렉토리에 저장합니다. 이렇게하면 솔루션을 코드에서 약간 분리하고 작업해야하는 프로젝트를 선택하는 것이 더 쉽습니다.


1

소스 제어에 저장하지 않는 것을 고려하는 유일한 경우는 소스 제어에있는 많은 프로젝트가 포함 된 대규모 솔루션이 있고 일부에 대한 기본 솔루션의 일부 프로젝트로 작은 솔루션을 만들고자하는 경우입니다. 개인 임시 요구 사항.


1

예-제품을 생성하는 데 사용되는 모든 것은 소스 제어에 있어야합니다.


1

TFS 버전 관리에 파일을 보관하거나 해결합니다. 그러나 또는 주요 솔루션이 정말 크기 때문에 대부분의 개발자는 필요한 것만 포함하는 개인 솔루션을 가지고 있습니다. 기본 솔루션 파일은 대부분 빌드 서버에서 사용됩니다.


0

.slns는 tfs에서 문제 가 없었던 유일한 것입니다 !


1
재밌 네요 ... SLN은 제가 고쳐야 할 유일한 파일 이었지만 ... 문제는 개발자들이 병합에주의하지 않았기 때문에 발생했습니다.
Matthew Whited
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.