2009-10-04 128 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

相关问题