다음은 Google에서 내 회사를 보호하는 방법입니다. (귀하의 마일리지는 달라질 것입니다!)
모든 비 시스템 (또는 GAC 이외의) 참조는 모든 개발자가 W : 드라이브에 매핑 한 Dev 서버에서 가져옵니다. 우리는 클라이언트 (또는 벤더)에 의한 서브 디렉토리와 적절한 다른 서브 디렉토리를 가진 공통의 DLL 디렉토리를 가지고 있습니다. 은 소스 컨트롤에 저장되어 있지 않습니다. 때때로 Infragistics에서 필요에 따라 license.dll을 제외합니다.
W : 드라이브에서 참조하는 정책과 같이 공급 업체 제공 라이브러리 (EntLib, Infragistics 등)의 경우. 기간. 어느 누구도 다른 곳에서 참조 할 수있는 권한이 없습니다. 이렇게하면 프로젝트 파일의 힌트가 공통 경로로 코딩됩니다.
사내 라이브러리 (클라이언트 및 내부 프로젝트)의 경우, 우리의 지속적인 통합 프로세스는 DLL을이 디렉토리의 해당 분기로 출력합니다. 우리의 모든 참조가 나온 곳입니다.
이렇게하면 VS가 매번 서버에 대해 자동으로 새로 고침하므로 로컬 컴파일 시간이 느려집니다 (로컬 디버깅의 경우). 그것은 귀찮은 일입니다 (때로는 프로젝트가 로컬로 구축하는 데 5 ~ 6 분이 걸릴 수도 있음). 그러나 다른 참조를 사용하는 사람들을 해결하는 것은 필요한 악마입니다. 여기서 이점은 누군가가 이러한 참조 중 하나에 대한 코드를 체크인하자마자 CI 서버가 빌드를 시작하고 모든 사람들이 신속하게 그 코드를 가져옵니다.
이 트릭은 안정적이고 반복 가능한 빌드 프로세스와 지속적인 통합 서버입니다. 우리는 NAnt 빌드와 통합 된 CruiseControl.NET을 사용하고 있지만, 여기에 좋아하는 CI 서버와 빌드 툴을 삽입하십시오.
소스 제어 시스템 (악마 스폰이라고도하며, 최근의 여러 가지 발언 참조)이 대규모 시스템에서 수행하는 동안 빌드 서버가 작동하는 것을 제외하고는 지금까지이 프로세스의 결과로 문제가 발생하지 않았습니다. 다중 파일 체크인. (Demon Spawn은 거래 체크인을 지원하지 않기 때문에) 그러나 이것은 매우 드물게 발생합니다 - 아마도 5 ~ 6 주에 한 번. 그리고 즉시 재건하는 군대가 그것을 처리합니다.
단지 몇 가지 생각 ...이 기법을 사용하면 사람들이 소스 제어를 망쳐 놓지 않아야합니다. 추가 보너스로 dll.refresh를 DLL에 체크인하지 않고 소스 제어의 크기를 줄이십시오. 파일.
그래, 그게 바로 내가 GAC에 직접 넣은 적이없는 이유야. –
또한 문제가 devs와 같은 것 같습니다. 어쩌면이 실수를하지 않도록 가르치기 위해 뭔가 할 수 있습니다. 누군가가 실수로 실수로 5 달러를 지불하면 기억할 수 있습니다. :) –
주요 문제는 DevExpress 컨트롤과 같은 GAC의 어셈블리. 우리는 lib 폴더 업데이트에 대한 책임이있는 사람 1 명에게 제 3 자 어셈블리를 할당하고 아무도 설치하지 못하게했습니다. 그 통제를위한 고통의 종류, 그러나 그것은 작동했다. – NotMe