2009-10-12 3 views
1

현재 대형 응용 프로그램을 개발하고 있습니다. 현재 많은 프로젝트에서 한 가지 해결책이 있습니다 (시간이 흘러도 바뀔 수 있습니다). 나뿐만 디렉토리 구조 설정 한중형/대형 솔루션 - Visual Studio 빌드 프로세스 - 조언 필요

:

\ lib 디렉토리의 \는 (제 3 자 구성 요소를 공유 포함) 빌드 \ 빌드 \ 빈 (출력 디렉터리) 빌드 \ wwwroot에 (웹 응용 프로그램의 출력 디렉토리) config \) src \ (아래 프로젝트의 폴더 포함)

각 프로젝트에서 빌드 위치 (출력 디렉토리)를 ".. \ build \ bin \"으로 설정했습니다. src 디렉토리 위의 build \ bin에 프로젝트를 빌드합니다.

Company.Entities에 는 언급 이 모든 비즈니스 객체 (고객, 주문, 제품) 등 ....

이 Company.Common 클래스를 포함 Company.Common 그 형식 문자열, 날짜, 파일 액세스 등. 회사에 대한 어떤 언급도 포함되어 있지 않습니다. 라이브러리. Company.Data이 참조 3 자 LIB (성 윈저 예를 들어) 이 IRepository, ICustomerRepository, IOrderRepository 등 .... 같은 인터페이스가 포함되어 RepositoryFactory 클래스가

-이라는 방법이있다 "GET () "를 반환하는 Ioc (Castle Windsor)를 사용합니다. 또한 이러한 저장소의 현재 구현을 해결하기위한 IoC가 포함되어 있습니다. Castle.config는 \ config \ 디렉토리에 있으며이 프로젝트에는 "링크로"포함되어 있습니다. 나는 항상 출력 디렉토리

Company.Data.LinqToSql 참조 Company.Data 이 현재 데이터 액세스 라이브러리에 복사를 설정했습니다. 그것은 참조 Company.Data 비즈니스 로직 계층에 IOC의

Company.Logic 인스턴스화 것 - GetProductById (문자열 ID) 등의 방법이있다 -. 차례이 Repository.Get() GetById (ID)를 호출 - 예 :

회사 테스터 자명하면 ... 앞으로 더 많이 활용할 것입니다.

Company.Web 참조 Company.Logic, Company.Entities, Company.Common 웹 UI 층 -이 주요 웹 사이트입니다.

좋아, 잘하면 내 프로젝트 등의 현재 아키텍처에 대한 약간의 배경을 제공합니다.

현재 빌드/wwwroot로 빌드하는 Company.Web을 제외하고는 모든 것을 thie 빌드/bin 디렉토리에 구축하고 있습니다 (여기에 bin 디렉토리가 추가됩니다). 그런 다음 빌드 후 이벤트를 복사합니다. 스타일 시트, 이미지, js 파일 등 .... src/Company.Web 위치에서 빌드/wwwroot 디버깅에 IIS를 사용하도록 Visual Studio를 구성하고 iis 가상 디렉터리를 가리 키도록 설정했습니다. 내 빌드/wwwroot 폴더.

그러나 ... 특정 필요한 파일은 wwwroot에/bin 디렉토리에 만들어지는 것이 아니다 등 - Company.Data.LinqToSql - 이것은 proejcts에 의해 참조되지 않지만, IOC의

사용하여 인스턴스화 이후 어떻게 내 개발 프로세스/프로젝트 구조를 개선하여 개발에 도움이 되었습니까? 나는 현명한 제안을 모두 "돋보이게"할 것입니다.

답변

1

점프 아웃 한 가지는 출력 파일을 build/bin에 복사하는 것입니다. 릴리스 빌드와 디버그 빌드에 별도의 하위 폴더가 있습니까? 필자는 비슷한 설정을 사용하는 대규모 프로젝트에서 작업 해 보았습니다. 다른 빌드에서 다른 빌드로 전환 한 문제가 자주 발생했지만 모든 파일이 반드시 다시 작성되지는 않았습니다 (이유가 무엇인지에 관계없이). 디렉토리에는 종종 두 빌드의 파일이 혼합되어 있습니다.

빌드 후 이벤트에 대해서는 나중에 수정할 필요가있을 때 찾기가 어려울 수 있으므로이를 피하려고합니다. 또한 개발자 머신과 빌드 서버에서 다른 동작이 필요할 때도 귀찮습니다. 대신 파일 복사, 압축 등을 처리 할 .bat 파일이나 MSBuild 스크립트를 만듭니다.

그렇지 않으면 괜찮은 구조와 프로세스가있는 것 같습니다. 프로젝트 전반에 걸쳐 문제, 혼란 등을 겪을 수 있습니다. 잠재적 인 항목을 변경하거나 미래의 프로젝트를 고려해야합니다.

관련 문제