2009-09-14 4 views
2

저는 제품 응용 프로그램을 빌드하는 데 사용되는 일련의 공통 프레임 워크 어셈블리를 개발하고 유지 관리합니다. 이러한 어셈블리는 새로운 기능이 구현됨에 따라 상대적으로 새롭고 유동적 인 상태로 유지됩니다. 결과적으로 어셈블리가 다소 자주 다시 빌드되고 재배포되는 것은 드문 일이 아닙니다. 나는 어셈블리가 안정화됨에 따라 이것이 줄어들 것이라고 기대하지만, 그것은 오늘날의 것입니다.개발중인 공유 어셈블리를 참조하는 방법 (.NET)

지금은 개발 프로젝트가 동일한 어셈블리를 참조 할 수있는 공통 폴더에 어셈블리가 배치됩니다. 업데이트 적용은 파일을 대체하는 것만 큼 간단하며 개발 프로젝트는 다음에로드하고 빌드 할 때 자동으로 변경 사항을 선택합니다.

문제는 프레임 워크 위에 빌드 된 여러 개의 "레이어"어셈블리가있을 수 있습니다. 예를 들어 모든 응용 프로그램에서 공유하는 코어 라이브러리와 코어를 참조하고 모든 서버 응용 프로그램에서 공유하는 서버 라이브러리가 있습니다. . 프레임 워크 어셈블리가 업데이트 될 때마다 모든 의존성을 다시 작성해야하므로 매우 큰 작업이됩니다. GAC를 사용할 수 있다고 믿지 않습니다. 왜냐하면 새로운 버전이 출시 될 때마다 모든 개발자가 시스템을 업데이트해야하기 때문입니다.

내가 게시자 정책을 조사하지만이 이유 중 몇 가지에 대한 내 문제를 해결할 몇 가지 의심했습니다 하나, 나는 파일을 내가 다시 때마다 다시하고 싶지 않아

  • 내 프레임 워크 어셈블리 -이 프로세스를 자동화 할 수있는 방법이 있습니까?

  • 어셈블리가 GAC에 들어가야하는지 명확하지 않습니다. 앞에서 말했듯이 새 버전의 어셈블리를 릴리스 할 때마다 개발자가 강제로 다시 설치하거나 업데이트하는 것을 원하지 않습니다.

  • 네트워크 설정 및 구성을 제어 할 수 없으므로 파일을 네트워크 공유에 배치하여 전체 "신뢰"문제를 피할 필요가 있습니다. 또한 많은 개발자들이 때로는 연결 방식으로 작업하기 때문에 연결이 끊어지면 파일을 사용할 수 있기를 바랍니다.

목표는 이러한 어셈블리를 소모하는 응용 프로그램 개발자에게 투명하게 업데이트하는 것입니다. 이 어셈블리는 응용 프로그램이 설치 될 때 대상 컴퓨터의 GAC에 설치되지만 의심 할 여지없이 개발을 위해 필요하지 않습니다. 또한 다른 팀에서 개발했기 때문에 각 응용 프로그램의 솔루션에 프로젝트를 포함시키는 것도 타당하지 않습니다.

나는 이러한 요구 사항에 혼자 있다는 것을 상상할 수 없으며 누군가가 나에게 해결책을 제시하기 위해 자신의 경험과 지혜를 나눌 수 있기를 바랍니다. 감사!

답변

0

NuGet이이 문제를 해결했습니다. 네트워크의 개인 저장소에서 공유 어셈블리, 프레임 워크 등을 NuGet 패키지로 배포함으로써 업데이트를 쉽게 게시하고 클라이언트 코드에 적절하게 적용 할 수 있습니다.

1

어셈블리를 GAC에 설치할 필요는 없습니다. 설정에 필요한 것은 없습니다.

여기서 가장 중요한 문제는 어셈블리가 모든 종속성을 강제로 다시 작성하고 이들 모두가 공유 위치에 배치되도록하는 것입니다.

여기서 가장 쉬운 옵션은 공유 어셈블리 중 하나가 업데이트 될 때마다 모든 것을 다시 빌드하는 빌드 서버를 갖는 것입니다. 또한 빌드가 체크인 될 때마다 코드 메트릭, 정적 코드 분석 등을 수행하는 것과 같이 빌드에서 다른 "스크립트"를 실행할 가능성이 있습니다.

그러면 빌드 서버에서 모든 것을 복사 할 수 있습니다 공유 위치로 이동합니다.프로젝트가 공유 위치에서 참조하고 명시 적으로 특정 버전으로 제한하지 않는다고 말하면 모든 것이 올바르게 작동합니다.

+0

체크 아웃 http://stackoverflow.com/questions/tagged/continuous-integration – TrueWill

+0

그래, CI가 쉽게이 작업을 수행 할 수 있습니다. –

관련 문제