2009-03-28 4 views
8

나는 prior 질문 및 답변을 보았습니다. 이 질문에서 원래의 포스터는 추가 질문을했습니다.왜 MSBuild를 사용할 수있을 때 Nant를 계속 사용 하시겠습니까?

msbuild를 사용하는 이유는 무엇입니까? 죄수들이 있습니까?

나는 그 답을 보지 못했습니다. 나는 그 대화를 알고 싶다. Nant의 강력한 특징은 무엇입니까?

난, 크로스 플랫폼이 크다고 생각합니다. msbuild의 경우 통화 및 Visual Studio와의 통합입니다. 이 말이 맞습니까? 다른 건 없니?

수정/추가 : 누구나 기능 목록 비교가 있습니까? 누군가는 "nant는 더 많은 기능을 갖추고있다"고 말했다. 어느 것?

이러한 프로젝트를 결합하고 상호 이익을 얻을 수 있도록 노력을 결합하는 것이 합리적일까요? MS가 Wibu와 같은 커뮤니티에 msbuild를 기꺼이 기여할 의향이 있는지 물어 봤습니까? 기회는 무엇입니까?

EDIT2 : 방금 this prior discussion을 발견했습니다. 왜 내가 전에 찾을 수 없었는지 확실하지 않습니다.

+0

크로스 플랫폼 - 모노도 csproj (msbuild)를 읽습니다. –

+0

oooo, cool. 모노의 빌드 툴은 ...? – Cheeso

+0

미안 해요 - 다시 말해야합니다. * nant *는 msbuild 파일을 사용해 행복하게 작업 할 것입니다. –

답변

14

NANT는 상자 밖으로 더 많은 기능을 가지고 있지만, MSBuild를 훨씬 쉽게 재사용은 MSBuild 스크립트를 구축 할 수 있습니다 더 나은 기본 구조 (항목 메타 데이터 바위)가 있습니다.

MSBuild는 이해하는 데 오랜 시간이 걸리지 만 일단 사용하면 매우 좋습니다.

학습 자료 :

사예드 이브라힘 하시 (월, 2009) 사예드 Y. 하시에 의해
  • Deploying .NET Applications: Learning MSBuild and ClickOnce
    SEP (2008)에 의해
  • +1

    나는 정반대의 경험을했습니다. MSBuild 스크립트가 혼란스럽고 NAnt 스크립트가 직관적 인 것으로 나타났습니다. 나는 사람들이 도구를 직접 비교하고 자신의 결론을 이끌어 낼 것을 제안합니다. – TrueWill

    2

    당신은 계속 당신이 이미 그것을 사용하고 있기 때문에 nant를 사용합니다. msbuild를 사용하고 있고 왜 nant로 전환 할 것인지 알고 싶다면 전환 할 이유가 없습니다. 적어도 당신은 2007 년 12 월 이후로 업데이트되지 않은 msbuild를 알고 있습니다.

    2

    NAnt는 Java 용 Ant를 기반으로한다는 점을 감안할 때, 그럴만 한 이유가있을 수 있습니다. Ant를 기반으로하는 다른 빌드 도구 - Phing은 PHP 용입니다. 이 도구를 사용하기 시작했을 때 이미 NAnt에 익숙했기 때문에 나는 그 도구를 사용하기 시작했습니다.

    1

    우리는 MS-Build를 사용할 수 있기 전에 NANT에서 시작했기 때문에 하이브리드 방식을 사용합니다. 그러나 MS-Build cna는 의존하지 않는 프로젝트에서 병렬 빌드를 수행합니다. 이는 적절한 상황에서 빌드 시간을 현저히 단축시킬 수 있습니다. NANT를 떠나 SVN과의 상호 작용, 배포 및 MS- 빌드를 수행하면 컴파일 시간이 약 45 % YMMV 단축됩니다.

    2

    간단히 말해 NAnt를 사용하기가 더 쉽습니다. 감히 이것이 앤트에 대한 내 배경 때문이라고 말하지만, 프로토콜 버퍼를위한 NAnt 파일을 으로 만들었습니다.은 MiscUtil 용 MSBuild 파일을 빌드하는 것보다 간단한 작업입니다.(지금도 MiscUtil 빌드에는 포함하고 싶지만 할 수없는 것들이 있습니다. IIRC의 텍스트 파일에 작업 결과물을 버리는 것은 엄청나게 어렵습니다.) 개념이 더 간단하고 파일 수집을 평가할 때 더 적은 점수를 내야합니다.

    저는 현재 이전에 생각한 설정을 사용하고 싶습니다. "기본"빌드 파일에 NAnt를 사용하지만 MSBuild를 호출하여 실제 " 내 .NET 프로젝트를 컴파일 "단계를 수행하십시오. 동일한 프로젝트에 대해 두 가지 빌드 시스템을 사용한다는 생각은 끔찍하지만 기본적으로 MSBuild 부분을 전체 빌드 시스템으로 취급하지 않습니다. 이는 컴파일하기 쉬운 방법 일 뿐이며 수동으로 프로젝트 파일을 검사 할 필요가 없습니다. (필자는 Visual Studio를 통해서만 상호 작용합니다.) 필자는 프로토콜 라이브러리를 매우 쉽게 개발할 수 있었고, MSBuild를 사용했다면 동일한 경험을했을지 의심 스럽습니다. ... 우리는 전략이 얼마나 휴대용 볼 수있는 시점에서

    +0

    어땠어? 3 년 후에, 빌드 시스템에 대해 어떻게 생각하십니까? 여전히 "msbuild inside nant"를 권하고 싶습니까? – Weeble

    +0

    @Weeble : 프로토콜 버퍼의 경우 이제 MSbuild를 완전히 사용하고 있습니다. 그러나 빌드 시스템을 솔직하게 이해하지 못합니다. 노다 시간 동안 나는 실제로 * 빌드 시스템을 가지고 있지 않습니다. 나는 psake에 관해 좋은 점을 보았고, 그 시간에 그립에 도달해야한다 ... –

    1

    일부를 -

    곧 내가 모노 (다음 gmcs의 이목을 끄는이 될 때까지 2.4이 출시 될 때)와 모두를 구축하려고하는거야 마음에 온 포인트 :
    • 는 Windows 워크 플로 파운데이션 작업하는 경우의 MSBuild를 사용해야합니다 (아마 이것은 또한 WPF 마찬가지 * .xoml 파일을 컴파일)

    • 설치 프로그램을 구축하기위한 wix를 사용하는 경우 .msi 파일을 사용하면 Visual Studio 또는 msbuild를 사용하여 wix 스크립트를 컴파일 할 수 있습니다 (erro r VS는 wix 스크립트에서 문제가있는 줄로 점프 할 수 있습니다.)
    • msbuild는 개발/Visual Studio 환경과 비슷한 빌드 환경을 제공합니다 (예 : msbuild postbuild 이벤트로 빌드 할 때 수동으로 유지 관리 할 필요가 없습니다. * .cs 파일 목록 - csc 작업, ...)

    여기서 나는 NAntContrib에서 msbuild 작업의 NAnt 스크립트를 사용하고 있습니다.

    관련 문제