MSBuild,VS2008解决方案和CI - 最佳实践是什么?

时间:2009-10-04 19:32:03

标签: visual-studio-2008 msbuild continuous-integration mstest

我正在为VS2008 / C#桌面项目设置一个CI系统,没什么特别的,只是一个构建/测试周期。 CI将使用MSBuild / MSTest在Hudson下运行,但我似乎无法决定如何做一些事情,也许你可以帮助我?

我在CI中运行项目的选项是:

  • 直接从MSBuild运行.sln
  • 直接从MSBuild运行.csproj
  • 创建一个单独的MSBuild项目,引用.sln或.csproj作为MSBuild任务
  • 创建一个单独的MSBuild项目导入一些东西(属性组或项目组) 来自.csproj

如果我不需要运行测试,我很可能只使用第一个选项(在MSBuild中运行.sln)。但我需要添加一个运行测试的任务,所以我似乎无法决定是否应该将任务/目标添加到.csproj中,或者在单独的项目中执行。我想要实现的一件事是,当我更改我的.sln或其中一个.csproj时,理想情况下我不应该触摸任何其他内容以便能够在CI中成功运行。

另一个问题是围绕运行MSTest - Exec任务是否足够,或者我应该编写/使用一些MSTest任务(似乎无法在.Net上找到一个)

1 个答案:

答案 0 :(得分:2)

Test任务是.NEt 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>

应该有效..