2012-06-27 1 views
3

내 프로젝트의 종속성을 줄이기 위해 이제 인터페이스에 의존하고 구현하는 모든 것을 갖게되고 IoC 컨테이너에 의해 함께 접착됩니다. 이것은 프로젝트가 그러한 인터페이스 라이브러리를 직접 참조하기 만하면된다는 것을 의미합니다.IoC를 통한 의존성 감소

그러나 구현에 대한 참조가있는 것으로 프로젝트를 지정하지 않으면 (컴파일 타임에 필요하지 않더라도) 구현 라이브러리는 실행 파일이나 설치 프로젝트에 포함되지 않습니다.

비주얼 스튜디오는 불필요한 경우 명시 적 참조가 필요하므로 나쁜 습관을 조장하고 있습니까? 필요한 인터페이스에만 종속성을 가질 수 있습니까?이 경우 구현 라이브러리를 사용할 수있는 가장 좋은 방법은 무엇입니까?

답변

2

비주얼 스튜디오는 불필요한 경우 명시 적 참조가 필요하므로 나쁜 습관을 조장하고 있습니까?

아니요. 귀하의 문제는 건물이 아닌 배치 중 하나입니다.

응용 프로그램을 배포하고 구축하는 것은 별개의 작업입니다. 적절한 배포 전략이 있다면 해당 응용 프로그램이 속한 구현을 배포하게됩니다.

필수 인터페이스에만 종속성을 가질 수 있습니까?이 경우 구현 라이브러리를 사용할 수있는 가장 좋은 방법은 무엇입니까?

가장 쉬운 방법은 참으로 구현 어셈블리를 참조하는 것입니다. 이것은 확실히 구축하고 로컬로 실행 F5처럼 쉬운 것입니다,하지만 당신은 정말로 그것을 원합니까? 솔직히 말해서, 당신과 당신의 팀이 인터페이스에 대해서만 코드를 작성하는 규율을 갖고 있다면, 그게 전부입니다. (그리고 nDepend와 같은 정적 분석 도구가 있습니다.

로컬 또는 다른 위치의 모든 종속성을 배포하는 배포 스크립트를 만드는 것이 한 가지 방법입니다.

+0

고맙습니다. @Oded. VS에있는 주식 템플릿을 받으면 이러한 의존성을 포함시켜야한다는 것에 동의합니다. 상자에서 나온 것 이외의 배포 전략으로 무엇을 권하고 싶습니까? –

+0

[WiX] (http://sourceforge.net/projects/wix/)는 빌드 및 배포 스크립팅을위한 효과적인 배포 도구 세트입니다. –

+0

@AdamHouldsworth - VS11에 설정 프로젝트가 없으므로 WiX로 이전해야 할 이유가 있습니다. –

0

문자열이나 XML 안에 구현 유형 이름 만 언급 한 것 같습니다. 따라서 Visual Studio에서는 이러한 참조를 형식에 대한 참조로 인식하지 않으므로 프로젝트 참조가 필요하지 않습니다.

실제로 구현 유형을 코드의 일부로 언급 한 경우 해당 프로젝트에서 해당 구현 어셈블리를 참조하거나 그렇지 않으면 컴파일러 오류가 발생할 수 있습니다.

따라서 IoC 컨테이너가 지원하는 경우 XML 구성 대신 코드 구성을 사용하면 참조를 Visual Studio에서 올바르게 설정하고 사용할 수 있습니다.

+1

저는 실제로 XML 설정이 없습니다, 그것은 모두 코드 설정에 있습니다. –

+0

@ Otávio, 답변에 구성 코드에 대한 대표적인 예를 추가 할 수 있습니까? – stakx

+0

아주 간단합니다. 객체를 등록 할 어셈블리 목록을 반복합니다. 이 목록은 동적으로 빌드 할 수 있습니다. –

1

아니요. 추가 작업을 수행하지 않고 (F5을 치는 것 외에) 개발자가 코드를 작성하거나 모든 참조가 기본적으로 추가되도록하기 위해 필요한 최소한의 것입니다. 구형 하드 디스크에서 느리고 엉망이 될 수 있습니다.

로컬 개발 빌드의 경우 관련 프로젝트에 포스트 빌드 단계가있어서 DLL을 기본 작업 디렉토리에 복사하면됩니다.그냥 롤 ... 다른 현명한 당신은 단지 어떤 빌드가 없었다 실현하기 위해 포스트 빌드에 전체 성가신 디버그 세션을 통해 갈거야, 프로젝트가 건설 될 활성 구성에 추가되어 있는지 확인

VS 2010. Post-build. Copy files in to multiple directories/multiple output path

본격적인 응용 프로그램 배포에 대한

Copy bin files on to Physical file location on Post Build event in VS2010

, 당신은 가능성이 비주얼 스튜디오 설정에서 찾고있을 거라고하는 것은 최소한의에서 프로젝트하지만, 더 이상적으로 WiX 같은 또는 다른 배포 도구 세트.

1

Visual Studio에는 이러한 참조가 필요하지 않지만 사용자의 IoC 컨테이너가 필요합니다. 프로젝트에 대한 참조를 추가 할 때 출력 바이너리가 자동으로 출력 폴더에 포함됩니다. 이는 IoC 컨테이너가 코드를 함께 붙이기 위해 필요합니다. Visual Studio에서 프로젝트를 참조하는 것보다 출력 폴더에이 바이너리를 가져 오는 다른 방법이 있습니다 - 아마도 post-build step?

+0

빌드 후 단계 일 가능성이 매우 높으며 설치 프로젝트에 수동으로 추가하는 중 ... –