使用发布目标和运行单元测试的TF构建定义

时间:2016-02-11 15:37:12

标签: tfs msbuild tfsbuild vs-unit-testing-framework

我使用TF Build创建了一个构建定义。这是我们项目的每晚构建。它应该运行已定义的单元测试,它应该打包Azure Cloud Service项目。

此版本已经运行了一段时间而没有打包步骤。这导致了一个成功的构建,也运行了单元测试。

根据以下指南,我添加了云服务的包装:https://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-continuous-delivery/。基本上,它归结为在Build定义中将目标设置为发布为msbuild(/ target:Publish)。

问题是,当使用Publish目标构建解决方案时,不会构建Unit测试项目。 MSBuild将返回以下消息:Skipping unpublishable project。我已将其追溯到常见的MSBuild目标文件。一个项目只会在发布是一个exe的项目结果时构建,如下所示:http://referencesource.microsoft.com/#MSBuildFiles/C/ProgramFiles(x86)/MSBuild/14.0/bin_/amd64/Microsoft.Common.CurrentVersion.targets,217

我尝试过:

  • 强制在发布版本中构建单元测试项目。 我已将以下msbuild添加到单元测试csproj文件中,以覆盖发布时的默认目标:
    <PropertyGroup>
      <PublishDependsOn>
         Build;
      </PublishDependsOn>
    </PropertyGroup>
    
  • 将Unit Test项目的输出类型设置为Console Application

在两个套件中,MSBuild将为单元测试项目引用的所有项目提供The specified project reference metadata for the reference "..\..csproj" is missing or has an invalid value: Project

我觉得我没有走上正轨。有没有办法构建单元测试项目并构建和发布Cloud Service项目?

2 个答案:

答案 0 :(得分:1)

Okee,它比我简单得多。

/target - MSBuild的参数可以采用依次构建的多个目标。我将构建定义更改为/target:Build;Publish作为msbuild params。这解决了这个问题。

答案 1 :(得分:0)

我在使用我的服务时遇到/t:Build;Publish错误(没有为云服务指定入口点)。所以我做了两个单独的操作,一个使用Build,另一个使用Publish并且有效。