로컬 개발을위한 두통을 피하면서 버전 관리 된 NuGet 클래스 라이브러리 패키지를 게시하고 사용하려고합니다. 다음은 Visual Studio 솔루션의 샘플 레이아웃입니다.NuGet 패키지를 참조하면서 고통없는 로컬 개발
| Libraries
| LibraryA
| LibraryB
| LibraryC
| Applications
| ApplicationD
| ApplicationE
이것은 공유 클래스 라이브러리와 여러 응용 프로그램을 모두 포함하는 단일 솔루션입니다. 현재 응용 프로그램에서 클래스 라이브러리에 대한 참조는 로컬의 솔루션 내 참조입니다.
라이브러리 (A, B, C)를 필요에 따라 응용 프로그램에서 참조하는 버전 NuGet 패키지로 게시하는 것이 좋습니다 (D, E). 이렇게하면 배포 된 응용 프로그램에 대한 업데이트와 독립된 공유 라이브러리 변경이 가능합니다. 이렇게하지 않으면 한 라이브러리를 변경하면 기술적으로 테스트해야하는 12 개 이상의 응용 프로그램에서 바이너리가 변경 될 수 있습니다. 이는 바람직하지 않으며 NuGet을 사용한 버전 관리로 해결됩니다.
그러나 LibraryA와 ApplicationD의 내용을 동시에 업데이트하려고한다고 가정 해 보겠습니다. NuGet으로 전환 한 후에이 작업을 수행하려면 LibraryA를 변경하고 커밋하고 패키지 생성을 기다리고 ApplicationD에 LibraryA에 대한 참조를 업데이트 한 다음 ApplicationD에서 테스트 또는 개발해야합니다. 이는 로컬 솔루션 내 참조를 사용하여 동시에 두 가지 작업을하는 것보다 훨씬 복잡합니다.
내 공유 클래스 라이브러리에 대해 버전이 지정된 NuGet 패키지의 견고 함을 얻는 동시에 여러 프로젝트 및 응용 프로그램에 걸쳐 있어도 개발을 간단하게 유지하는 더 좋은 방법은 무엇입니까? 내가 찾은 유일한 해결책은 모두 NuGet 패키지와 로컬 프로젝트 사이의 ApplicationD에 대한 참조를 끊임없이 변경해야하는 등 너무 많은 오버 헤드 또는 두통을 포함합니다.
편집 :는 전제를 명확히하기 위해,이 문제는 가정 다음 크게
- 아키텍처 (솔루션 및 프로젝트 조직) 사소한 주파수
- 공유 라이브러리를 변경하면 응용 프로그램을 강제로 업데이트 할 수 없습니다.
- 응용 프로그램이 다른 버전의 공유 라이브러리를 참조 할 수 있습니다.
이 문제가되는 경우, 내가보기 엔 NuGet 패키지를 사용하지 않는 것이 좋습니다 것입니다 "우리가 나는 동시에 LibraryA 및 ApplicationD의 내용을 업데이트 할 것을 가정 해 봅시다." 어셈블리는 드물게 변경 될 정도로 안정적이고 변경 프로세스가 나머지 시스템과 분리되면 NuGet 패키지로 전환해야합니다. – Euphoric
@ 유포라 50 개의 개별 애플리케이션에서 사용할 수있는 공유 라이브러리 A를 업데이트 할 수있는 방법에 대한 권장 사항이 있습니까? 50 개 애플리케이션 모두에서 새 버전을 강제 실행하지 않고 많은 회귀 테스트를 실행할 필요가 없습니까? 당신이 언급 한 안정성은 노력하기에 이상적이지만이 사용 사례에는 실용적이지 않습니다. 나는 다른 접근법/도구에 대해 개방적이다. – jmsb
저는 여러분이 안정적이지 않고 50 기타에 의존하는 라이브러리를 가지고 있다고 생각합니다. 가장 좋은 방법은 아키텍처를 리엔지니어링하여 안정성을 높이고 자체 요구 사항, 변경 요청 및 개발 계획과 같은 별도의 솔루션을 만드는 것입니다. 그리고 당신이 정말로 그것에 의존하는 50 개의 어플리케이션을 가지고 있다면, 그렇게 큰 노력이 아닐 것입니다. – Euphoric