2009-10-04 170 views
0

我爲VS2008/C#桌面項目設置了一個CI系統,沒什麼奇特的,只是一個構建/測試周期。 CI將使用MSBuild/MSTest在Hudson下運行,但我似乎無法決定如何做一些事情,也許你可以幫助我?MSBuild,VS2008解決方案和CI - 最佳實踐是什麼?

我在CI運行項目的選項有:

  • 直接的MSBuild
  • 運行的.csproj直接的MSBuild
  • 運行的.sln創建一個單獨的MSBuild項目引用的.sln或.csproj的作爲MSBuild任務
  • 創建一個單獨的MSBuild項目從導入的.csproj一些東西(屬性組或項目組)

如果我不需要運行測試,我很可能只是使用第一個選項(使用MSBuild運行.sln)。但是我需要添加一個用於運行測試的任務,所以我似乎無法決定是否應該將任務/目標添加到.csproj或在單獨的項目中執行。我想要實現的一件事是,當我更改我的.sln或.csproj之一時,理想情況下,我不應該碰其他任何東西,以便能夠在CI中成功運行。

另一個問題是圍繞運行MSTest的 - 是Exec的任務足夠,或者我應該寫/使用一些MSTest的任務(似乎無法找到一個基於.NET)

回答

2

測試任務是內置的任務.Build 3.5 Framework中的MSBuild,代碼覆蓋率也是如此。只需在MSDN上的BeforeTest和CoreTest目標上進行搜索即可。不是很辛苦,就包括像:

<ItemGroup> 
     <TestContainer Include="$(OutDir)\BuildTestProject.dll" /> 
    </ItemGroup> 

    <ItemGroup> 
     <MetaDataFile Include="$(SolutionRoot)\BuildTest.vsmdi" /> 
    </ItemGroup> 

    <PropertyGroup> 
     <RunConfigFile>$(SolutionRoot)\LocalTestRun.testrunconfig</RunConfigFile> 
    </PropertyGroup> 

應該工作..

+0

不,似乎無法使它發揮作用。 RunConfigFile是TestToolsTask的一個屬性,它是Team Foundation Build的一部分。 TFS不在我的照片中。 – 2009-10-06 05:41:47

+0

啊,不知道它只是TFBuild,在這種情況下,你應該通過調用一個Exec任務來確實使用MSTest。網上應該有大量的樣本。 – 2009-10-06 08:07:12

相關問題