우리는 109 개의 별도 프로젝트를 처리해야하는 것과 비슷한 문제가 있습니다. 우리의 경험을 바탕으로 원래의 질문에 대답하려면
1. 우리는 '참조를 추가'상황에 맞는 메뉴 옵션을 사용하면 프로젝트
사이의 최적의 핸들 참조를 할 방법. '프로젝트'를 선택하면 기본적으로 단일 글로벌 솔루션 파일에 종속성이 추가됩니다.
2. "로컬 복사"를 켜거나 끕니까?
경험 부족 여분의 복사는 빌드 시간을 추가합니다.
3.
는 모든 프로젝트는 자신의 폴더를 만들 경우, 또는 그들은 모두 (그들은 동일한 응용 프로그램의 일부입니다)
우리의 출력은 모두가 하나에 넣어 동일한 출력 폴더에 구축해야 'bin'폴더에 저장됩니다. 이 폴더는 소프트웨어를 배포 할 때와 동일합니다. 이렇게하면 개발자 설치가 배포 설치와 다를 때 발생하는 문제를 방지 할 수 있습니다.
4. 솔루션 폴더는 정리하기 좋은 방법입니까?
아니요. 한 사람의 폴더 구조가 또 다른 악몽입니다. 깊게 중첩 된 폴더를 사용하면 폴더를 찾는 데 걸리는 시간이 길어집니다. 우리는 완전히 평평한 구조를 가지고 있지만 프로젝트 파일, 어셈블리 및 네임 스페이스의 이름을 동일하게 지정합니다.
우리의 프로젝트 구조화 방법은 하나의 솔루션 파일에 의존합니다. 프로젝트 자체가 변경되지 않은 경우에도 빌드에는 시간이 오래 걸립니다. 이를 돕기 위해 일반적으로 다른 '현재 작업 세트'솔루션 파일을 만듭니다. 우리가 작업하고있는 모든 프로젝트가이 작업에 추가됩니다. 우리가 보았던 한 가지 문제점이 현재 세트에없는 프로젝트에 정의 된 유형에 대해 Intellisense가 실패하더라도 빌드 시간이 크게 향상되었습니다.
우리의 솔루션 레이아웃의 부분 예 :
\bin
OurStuff.SLN
OurStuff.App.Administrator
OurStuff.App.Common
OurStuff.App.Installer.Database
OurStuff.App.MediaPlayer
OurStuff.App.Operator
OurStuff.App.Service.Gateway
OurStuff.App.Service.CollectionStation
OurStuff.App.ServiceLocalLauncher
OurStuff.App.StackTester
OurStuff.Auditing
OurStuff.Data
OurStuff.Database
OurStuff.Database.Constants
OurStuff.Database.ObjectModel
OurStuff.Device
OurStuff.Device.Messaging
OurStuff.Diagnostics
...
[etc]
단일 솔루션에 100 개 이상의 프로젝트가 필요한 이유를 묻습니다. 그들은 각각 자신의 어셈블리를 만들고 있습니까? –
예, 그렇습니다. 그리고 각각은 논리적으로 분리 된 기능을 나타냅니다. – Eyvind
우리는 Java에서 비슷한 점이 있습니다 ...하나의 프레임 워크, 약 200 개의 플러그인. 이클립스를 모두로드 할 때 테스트를 시작합니다. 드물지 않다고 생각합니다. (이것이 학계이지만, 아마도 The Real World ™와는 다를 것입니다.) – Joey