2010-06-23 13 views
1

3 개의 응용 프로그램 (하나의 Windows 응용 프로그램과 두 개의 웹 응용 프로그램)이있는 시스템이 있습니다. 이 응용 프로그램은 모두 두 개의 어셈블리를 공유합니다. 따라서 총 5 개의 프로젝트가 있습니다. 과거에는 각 프로젝트마다 별도의 솔루션을 사용했습니다. 이를 통해 각 어셈블리를 소스 컨트롤에서 개별적으로 버전화할 수있었습니다. 그러나 공통 어셈블리 중 하나에 변경 한 내용이 응용 프로그램을 손상시키는 지 확인하기 위해 각 솔루션을 개별적으로 열어야하므로 상당한 오버 헤드가 있습니다.Visual Studio의 버전 및 솔루션 구조

하나의 솔루션에 모든 프로젝트가 포함 된 구조로 이동하는 방법에 대해 생각해 보았습니다. 이렇게하면 내가 한 모든 변경 사항의 영향을 즉시 볼 수 있지만 버전 문제는 발생합니다. 공통 어셈블리 만 변경하거나 응용 프로그램 중 하나만 변경하면 각 프로젝트/어셈블리는 곧 다른 버전 수준이됩니다. 소스 제어에서는 전체 솔루션이 함께 있기 때문에 프로젝트 저장소에 사용할 단일 버전 번호가 없습니다.

내가 읽은 각 토론은 하나의 문제 또는 다른 하나를 해결하는 것으로 보입니다. 쉬운 버전 관리를위한 여러 솔루션 또는보다 쉽게 ​​종속성을 제어 할 수있는 단일 솔루션.

사람들은 솔루션을/구조화해야하지만 어셈블리를 적절하게 버전화 할 수 있어야합니까?

답변

1

나는 여러 가지 해결책을 고수 할 것입니다. 귀하의 Windows 응용 프로그램은 실제로 귀하의 웹 응용 프로그램에서 무슨 일이 일어나고 있는지 알 필요가 없습니다.

우리는 공통의 어셈블리가 서로 공유되어있는 여러 웹 응용 프로그램이있는 비슷한 설정으로 작업합니다. 매일 (또는 빌드 시간이 충분히 빠르다면 계속) 빌드하면 도움이됩니다. 우리는 NAnt와 CruiseControl을 사용하지만 가능한 옵션은 의견만큼 풍부합니다.

연속 빌드 설정을 사용하면 공유 라이브러리를 빌드하고 유닛 테스트를 통과 한 후에 다른 솔루션 빌드 (웹 앱 등)를 트리거 할 수 있습니다. 다른 솔루션을 열어야하지만 필요한 경우 빌드 서버에서 알려줄 수 있습니다.

+0

+1 지속적으로 통합하고 단위 테스트가있는 빌드 서버를 사용하는 경우 +1. – David

0

개인적으로 필자는 종속성 제어가 쉬운 솔루션을 선호합니다. 나는 동일한 버전 #에서 아이템을 가지고있는 것보다 변화를 깨는 것에 대해 훨씬 더 걱정하고있다.

내가 개인적으로 버전 번호에 대해 우려하는 유일한 시간은 문제를 해결하거나 버그를 수정해야 할 때입니다. 버그 수정을해야한다면 코드를 다시 컴파일하고 최신 버전을 사용하게 될 것입니다. 모든 정직한면에서, 내가 개발 한 공유 클래스 라이브러리의 이전 버전을 사용하는 코드를 실행하는 사람이 있다면, 뭐라 구요? 작동한다면 이전 버전 인 경우 무엇을 신경 써야합니까? 새로운 버전이있는 유일한 이유는 나중에 작성된 일부 응용 프로그램에 추가 기능이 필요했기 때문입니다.

"물론 공유 어셈블리를 변경하면 변경으로 인해 기존 코드가 손상 될 수 있습니다."라는 명령을 따르고 있다고 가정합니다. 새로운 기능을 추가하는 것은 괜찮습니다. 함수가 내부적으로 다르게 작동하도록 함수를 수정하지만 동일한 결과를 반환하면 좋습니다. 새 소프트웨어에서 작동하지만 기존 소프트웨어를 손상시키지 않도록 기능을 변경하는 것은 좋지 않습니다. 그런 다음 버전 관리에 대한 걱정은 문제가되지 않습니다.

물론 나는 버전에 대해 걱정할만한 이유가있는 상점에서 일한 적이 없기 때문에 가능할 수 있습니다. 따라서이 답변에 대해 두들겨 맞을 것으로 예상되지만, 왜 내가 이것이 어쨌든이 사이트를 좋아하는 이유에 대한 해답 인 이유에 대한 의견을 통해 알게 될 것입니다.

관련 문제