我使用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
我尝试过:
<PropertyGroup> <PublishDependsOn> Build; </PublishDependsOn> </PropertyGroup>
在两个套件中,MSBuild将为单元测试项目引用的所有项目提供The specified project reference metadata for the reference "..\..csproj" is missing or has an invalid value: Project
。
我觉得我没有走上正轨。有没有办法构建单元测试项目并构建和发布Cloud Service项目?
答案 0 :(得分:1)
Okee,它比我简单得多。
/target
- MSBuild的参数可以采用依次构建的多个目标。我将构建定义更改为/target:Build;Publish
作为msbuild params。这解决了这个问题。
答案 1 :(得分:0)
我在使用我的服务时遇到/t:Build;Publish
错误(没有为云服务指定入口点)。所以我做了两个单独的操作,一个使用Build
,另一个使用Publish
并且有效。