문제

MSBuild (또는 NANT)와 같은 도구를 사용하여 프로젝트 모음을 구축하는 것과 명령 줄에서 devenv.exe를 실행하는 것이 어떤 장점을 설명 할 수 있습니까?

내가 과거에 함께 일했던 동료는 (적어도 이전 버전의 Visual Studio에서) devenv.exe를 사용하는 다른 기술보다 훨씬 느 렸지만 그 증거를 읽지 않았다고 설명했습니다. Moot Point는 이제 2005 년부터 시작하여 Visual Studio는 MSBuild 아래에서 MSBuild를 사용합니다.

MSBuild를 사용한다는 장점 중 하나는 빌드 머신에 Visual Studio를 설치하지 않고도 프로젝트를 구축 할 수 있지만 다른 사람이 있는지 확실하지 않았습니다.

도움이 되었습니까?

해결책

한 가지 이유는 제품을 컴파일하는 것보다 훨씬 더 많은 제품이 있기 때문입니다. 설치 작성, 버전 번호 업데이트, 에스크로 작성, 최종 패키지 배포 등과 같은 작업은 이러한 도구 (및 확장)가 제공하는 것 때문에 훨씬 쉬울 수 있습니다.

정기적 인 스크립트 로이 모든 것을 할 수는 있지만 Nant 또는 MSBuild를 사용하면이 모든 작업을 수행하기위한 확실한 프레임 워크를 제공합니다. 다운로드 할 수있는 추가 작업 (예 : MSBuild 커뮤니티 작업 프로젝트). 또한 수많은 제 3 자 및 오픈 소스 제품에서 지원이 있습니다.

컴파일에 관심이 있다면 (전체 빌드 프로세스가 아닌) MSBuild의 한 번 절약 혜택을 찾을 수 있습니다. 여러 프로세서를 사용한 건물 지원.

다른 팁

우리 팀의 명백한 대답은 그 것입니다 비주얼 스튜디오가 설치되지 않았습니다, 특히 Build/CI 서버에 Visual Studio를 설치하지 않습니다.

NANT 또는 MSBUILD와 같은 외부 빌드 도구를 사용하는 주요 이유는 빌드 프로세스를 자동화하여 시스템 상태에 대한 지속적인 피드백을 제공하기 때문입니다. 또한 "순수한"빌드 외에도 많은 것들에 사용될 수 있으며, 실제로 당신이 그들로부터 가치를 얻기 시작하는 곳입니다. 단일 명령으로 응용 프로그램을 구축하고 테스트 할 수있는 것은 극도로 귀중한 것입니다.

또한 메트릭 모음, 릴리스 바이너리 포장 및 모든 종류의 멋진 물건을 추가하기 시작할 수도 있습니다.

C#이 진행되는 한, devenv.exe 2005는 컴파일러 내 프로그램을 실행하여 상당한 솔루션에 대한 메모리 예외를 유발할 수 있습니다. MSBuild는 각 프로젝트에 대한 CSC.EXE 프로세스를 시작합니다. Devenv /빌드로 컴파일하지 않는 프로젝트는 MSBuild와 잘 작동합니다. 당신이 이런 이유를 좋아하기를 바랍니다.

우리는 Devenv에서 후드 아래에서 msbuild를 사용하는 도구 (Visual Build Pro)로 전환을 실험하고 있으며 "어셈블리 '시스템에 필요한 참조를 얻었습니다. Visual Studio에서 잘 구축됩니다.

우리는 C#, 관리 된 C ++ 및 일반 구조되지 않은 C ++ 어셈블리/DLL로 구성된 대형 시스템을 가지고 있습니다. 일반적인 C ++ 코드 (WHEW!)에 따라 관리되는 C ++ 코드에 따라 C# 코드에 따라 관리되는 C ++ 코드에 따라 C ++ 코드가 있습니다. 몇 년 전에 자동화 된 빌드 환경을 설정할 때 MSBuild.exe가 우리가 가진 모든 의존성을 제대로 처리하지는 못했다는 것을 알게되었습니다.

Microsoft와 함께 우리는 일부 문제를 해결할 수 있었지만 모두 문제를 해결할 수있었습니다. 내 기억이 저에게 서비스를 제공한다면, 우리는 관리 된 C ++ DLL에 의존하는 C# 어셈블리를 구축 할 수 없습니다. 그래서 우리는 명령 줄에서 devenv.exe라는 사용자 정의 빌드 스크립트를 만들었고 잘 작동했습니다.

물론 VS2005와 관련이 있었지만 지금은 고정 될 수 있지만 스크립트는 여전히 작동 중이므로 문제를 다시 방문하지 않았습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top