상당히 큰 .NET 응용 프로그램 포트폴리오를 유지 관리하는 데 관여합니다. 또한 포트폴리오에는 다른 플랫폼 (기본 C ++, ECLIPS 양식 등) 위에 구축 된 레거시 응용 프로그램이 있습니다.
NAnt 위에 복잡한 빌드 프레임 워크가 있어이 모든 응용 프로그램의 빌드를 관리합니다. 빌드 프레임 워크는 NAnt를 사용하여 여러 가지 다른 작업을 수행합니다.
- Subversion에서 코드를 가져오고 Subversion에서 태그를 만듭니다.
- .NET 용 MSBuild 또는 다른 플랫폼 용 다른 컴파일러를 사용하여 코드 작성
- AssemblyInfo 파일 내부를 들여다보고 버전 번호 증가
- 빌드 / 릴리스에 포함되어서는 안되는 특정 파일을 삭제하십시오.
- 배포 폴더에 코드를 해제합니다
- 백업 목적을위한 우편 번호
- Windows 서비스를 배포하십시오. 그들을 시작하고 중지
- 기타.
이러한 작업은 대부분 NAnt만으로 수행 할 수 있지만 NAnt가 환경과 관련된 몇 가지 작업을 수행하기 위해 몇 가지 확장 작업을 작성했습니다. 또한 위의 대부분의 프로세스는 많은 다른 응용 프로그램 빌드 스크립트에서 일반화되고 재사용되므로 논리를 반복하지 않습니다. 따라서 간단한 NAnt 코드가 아니며 간단한 빌드 스크립트가 아닙니다. 빌드를 실행하기 위해 함께 수십 개의 NAnt 파일이 있습니다.
최근 몇 가지 이유로 NAnt에 불만을 표명했습니다. (1) 구문이 끔찍합니다. XML을 기반으로하는 프로그래밍 언어는 유지하기가 정말 끔찍합니다. (2) 프로젝트는 포도 나무에서 죽었습니다. 최근에 수많은 업데이트가 없었으며 실제로 아무도 주도권을 잡고 있지 않은 것 같습니다. .NET 4로 작업하려고하면이 활동 부족으로 인해 약간의 어려움이 발생합니다.
그래서, 그 배경을 모두 벗어난 내 질문이 있습니다. 위의 목록을 기반으로 달성하고자하는 것들 중 일부를 주로 고려하고 있으며 주로 .NET 상점에 있지만 비 .NET 프로젝트를 빌드해야한다는 점을 고려할 때 NAnt에 대한 대안을 고려해야합니다 로 전환?
내 레이더에는 Powershell ( psake 포함 또는 제외 ), MSBuild 자체 및 rake가 있습니다. 이들은 모두 장단점이 있습니다. 예를 들어, MSBuild는 충분히 강력합니까? 나는 그것을 몇 년 전에 사용한 것을 기억하고 NAnt만큼 많은 힘을 가지고 있지 않은 것 같습니다. 레이크를 사용하여 빌드를 수행하기 위해 팀에서 Ruby를 배우도록 정말로 하시겠습니까? psake는 내 포트폴리오를 고정시킬 수있는 프로젝트로 충분히 성숙합니까? Powershell이 "금속에 너무 가까워서"필자가 직접 사용하는 것과 비슷한 자체 빌드 라이브러리를 작성해야합니까?
고려해야 할 다른 도구가 있습니까? 상당히 복잡한 .NET 포트폴리오를 유지 관리하는 데 관심이 있다면 어떤 빌드 도구를보고 계십니까? 귀하의 팀은 현재 무엇을 사용하고 있습니까?