문제

좋아, 그래서 나는 지속적인 통합에 관해서는 내가 초보자임을 쉽게 인정한다.

즉, 저는 스스로 교육하기 위해 CC.NET 환경을 설정하려고 노력하고 있지만 자동화 된 빌드 부분을 설정하는 데 필요한 정보를 찾는 데 어려움이 있습니다.

내가 이해하는 것처럼 C#에서 .csproj 파일은 vs 2005와 앞으로 생성됩니다. ~이다 유효한 MSBuild 파일. WIT는 .csproj 파일을 사용하여 MSBuild 작업을 CC.NET에 통합 할 수 있었지만 몇 가지 문제가 있습니다.

  1. 여기에는 자동화 된 빌드 환경에서 정말로 필요하지는 않습니다.
  2. 이 파일을 만들지 않았습니다. 나는 그것을 이해하지 못하고 그것은 나를 두려워합니다. (우연의 프로그래밍)
  3. 일어나고있는 대부분의 일은 $(MSBuildToolsPath)\Microsoft.CSharp.targets
  4. 1, 2 및 3의 결과로 Mbunit과 같은 것을 포함하도록 파일을 수정하는 것은 필요한 것보다 복잡하고 더 어려워 보입니다. 나의 유일한 실제 옵션은 AfterBuild 섹션은 나에게 해킹처럼 보인다.

따라서 CC.NET 사람들, MSBuild 사람들 및 MBUnit 사람들에게 몇 가지 질문이 있습니다.

  1. MSBuild를 사용할 때 vS-Generated .csproj 파일을 빌드 파일로 사용하는 것이 좋습니다. 아니면 내 자신을 만들어야합니까?
  2. MBUNIT 테스트가 MSBuild 파일 또는 CC.NET 파일의 일부 여야합니까? 내 연구는 그들이 MSBuild 파일에 속한다고 제안하는 것 같습니다. 이 경우 새 MSBuild .proj 파일을 작성하고 .csproj 파일 외에도 CVS에 확인해야합니까? 아니면 mbunit 작업이 내 .csproj 파일의 일부가됩니까?
  3. 질문 2와 유사합니다. MSBuild 파일에 mbunit 테스트를 추가하고 .csproj 파일을 사용하여 Target Name="AfterBuild" 실제로 그 정보를 추가하는 섹션? a가 없어야합니다 Target Name="Test" 부분? 생성 된 .csproj 파일을 사용하면 두 번째 옵션을 방지하는 것으로 보입니다.

나는 거기에 많은 것이 있다는 것을 알고 있지만, 내가 온라인으로 찾을 수있는 대부분의 것들은 내가 가지고 있지 않은 주제에 대한 어느 정도의 친숙 함을 가정합니다. 내가 착각하지 않는 한,이 물건에 대한 학습 곡선은 ISN입니다. '곡선이 전혀 없으면 단계 기능입니다. :)

편집 1 : 나는 텍스트를 좀 더 간결하고 답을 가지고 있었던 몇 가지 질문을 해결하도록 텍스트를 업데이트했습니다.

도움이 되었습니까?

해결책

생성 된 .csproj 파일을 사용하는 것이 좋습니다. 실제로 생성 된 .sln 파일을 사용하는 것이 좋은 생각이라고 생각합니다. 개발자와 동일한 솔루션 파일을 사용하여 얻을 수 있다는 것을 알게되었습니다.

.SLN 파일은 실제로 유효한 MSBuild 프로젝트 파일이 아닙니다. 입력으로 사용될 때 MSBuild 자체에 의해 MSBuild 프로젝트로 변환됩니다. 교활한!

학습 목적으로 .csproj의 빌드를 기록하고 진행되는 일에 대한 아이디어를 얻으려면 단계를 진행할 수 있습니다. MSBuild는 Nant보다 조금 더 선언적이므로 시간을내어 약간 실험하십시오.

마지막으로, 나는 당신의 .sln 또는 .csproj 파일을 MSBuild 작업과 함께 연속 빌드 스크립트 프로젝트에 랩핑하여 프로젝트를 구축하고 단위 테스트를 함께 실행합니다. 이런 식으로 개발자는 구축 할 때마다 장치 테스트를 실행할 필요가 없지만 코드를 통합 할 때마다 장치 테스트가 실행됩니다. 그리고 네, 그들이 빨리 달리는지 확인하십시오! 1 초 이상이 걸리는 것은 예정된 (야간) 빌드 중에 실행되어야합니다. 아마도 단위 테스트가 적고 단위 테스트 프레임 워크가 1 초 이상 걸리면 더 많은 통합 테스트 일 것입니다.

편집하다: MSBuild 3.5를 사용하여 유용하다고 판단한 몇 가지 추가 정보 .SLN 파일에서 대상 출력을 얻을 수 있지만이 정보는 MSBuild 2.0에서 반환되지 않습니다 (.CSPROJ 파일에서는 작동해야한다고 생각하지만 .CSPROJ 파일에는 작동해야한다고 생각합니다. 두 버전 모두). 출력 (내장 파일)을 장치 테스트 프레임 워크에 입력으로 사용할 수 있습니다.

다른 팁

CSPROJ 파일을 홀로 남겨 두십시오.

MSBuild 작업을 통해 자신의 MSBuild Proj 파일을 작성하고 기본 빌드 파일에서 CSPROJ (또는 SLN)를 호출하십시오. CI 서버에 빌드 파일을 빌드하도록 지시하십시오.

이 분리를 통해 자체 사전 및 사후 작업 (단위 테스트, 연기 테스트 SQL 스크립트, FXCOP/기타 정적 분석 등)을 더 쉽게 추가 할 수 있으며 작업 환경을 깨뜨리지 않습니다. 또한 원하는 대상 (MSBuild/ant 등)에서 CodePlex의 MSBuildContrib와 같은 모습을 볼 수 있음을 의미합니다.

빌드 서버에서 시각적 스튜에도가 필요하지 않습니다 (내가 마지막으로 보이기 때문에 변경되지 않는 한 배포 프로젝트가 없습니다).

나만의 프로젝트 파일을 만들고 ( *proj로 끝나는 모든 것은 msbuild에 의해 프로젝트 파일로 간주 됨) 빌드를 거기에서 호출하십시오. 이와 같이:

<MSBuild Projects="MySolution.sln" Targets="Clean; Rebuild" Properties="Configuration=$(BuildMode);">

MSBuild는 변경없이 .sln (솔루션 파일)을 빌드 할 수 있습니다. 이는 일반적으로 CSPROJ 파일을 갖는 것보다 쉽습니다 ...

나는 Nant와 MSBuild를 모두 사용합니다. Nant는 업그레이드되었습니다 nantcontrib 그래서 내가 얻었습니다 MSBUILD Taks. 나는 임시 설정 일지 모르지만 지금까지는 큰 문제를 해결하지 못했습니다. 즉, VS2008에서 사용하는 것과 동일한 CSPROJ/SLN을 사용하기 때문에 새 CSPROJ 파일도 생성하지 않습니다. MSBuild로 프로젝트 구축을 크게 단순화 한 레거시 Nant 스크립트 (우리는 사용 CSC 직무).

메모:

  1. 프로젝트에서 Windows Workflow Foundation을 사용하는 경우 MSBuild없이 이러한 프로젝트를 구축하는 데 큰 어려움이 있습니다.
  2. 빌드 머신에 대 VS.NET을 설치하지 마십시오. 당신이 사용할 수있는 wix 설치 MSI를 만듭니다.
  3. @Franci Penov : 실행 단위 테스트는 모든 빌드의 일부 여야합니다. 버그를 찾기 위해 내일까지 기다리고 싶습니까? 참고 사항이 있습니다. 단위 테스트는 매우 빠르게 실행해야합니다.

나는 개인적으로 .csproj 파일을 사용해도 괜찮다고 생각합니다. 자신의 MSBuild 프로젝트를 롤링하는 경우 자신을 추가 할 필요가 없을 정도로 그다지 많은 일이 일어나지 않습니다.

그러나 어떤 경로를 결정하든, 빌드 단계의 일부로 mbunit을 추가하지 말고 CC.NET의 별도 단계로 추가하는 것이 좋습니다. 실행 단위 테스트는 일일 CI주기의 일부 여야합니다. 그러나 모든 빌드의 일부가되어서는 안됩니다.

좋아, 조심해야 할 것은 거의 없다. CSPROJ 형식은 VS2005에서 VS2008로 변경되었습니다. 또한 MSBuild를 사용하는 경우 .vdproj (Setup) 파일을 빌드 할 수 없다는 것을 기억하십시오. 이를 위해서는 devenv (대 실행 파일)가 필요합니다. 즉, 항상 devenv를 호출하고 당신을 위해 빌드하는 msbuild 작업을 만들 수 있다고 말했습니다.

자신의 CSPROJ 파일을 구축 할 것인지 vs2005에서 만든 파일을 사용하는지 여부에 대해 질문에 대해서는 중간 도로를 제안합니다. 나만의 프로젝트 템플릿을 만듭니다, 그것은 당신의 필요를 충족시키고 대 VS가 나머지를 돌 보도록합니다.

msBuild의 입력으로 .csproj를 사용해도 괜찮습니다. CSPROJ에 작업을 수동으로 추가 할 수 있으며, 이는 vs에서 상해 내내 무시됩니다. 그러나 사소한 일을 만들려면 별도의 MSBuild의 스크립트를 만드는 것이 좋습니다. CSPROJ 파일에서 참조 할 수 있습니다. TFS의 일부인 MS 빌드 서버를 살펴 보셨습니까? TFS의 SourceControl과 통합되며 CI에 사용될 수 있습니다. 프로젝트 파일은 MSBuild 스크립트입니다.

nant를 사용했다면 VS를 서버에 설치해야합니까? 'msbuild'를 의미 했습니까? 아니요, CSPROJ 파일과 함께 MSBuild를 사용하기위한 VS를 반드시 설치하는 것은 아닙니다.

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