带有发布目标和 运行 单元测试的 TF 构建定义
TF Build definition with Publish target and running unit tests
我使用 TF Build 创建了一个构建定义。这是我们项目的夜间构建。它应该 运行 定义的单元测试并且它应该打包 Azure 云服务项目。
这个构建已经 运行 宁宁了一段时间,没有打包步骤。这导致构建成功,同时 运行 单元测试。
根据以下指南,我添加了云服务的包装:https://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-continuous-delivery/。基本上它归结为在构建定义中将目标设置为 Publish for msbuild (/target:Publish)。
问题是,当使用发布目标构建解决方案时,不会构建单元测试项目。 MSBuild 将 return 显示以下消息: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>
- 将单元测试项目的输出类型设置为控制台应用程序
在这两种情况下,MSBuild 将为单元测试项目引用的所有项目提供 The specified project reference metadata for the reference "..\..csproj" is missing or has an invalid value: Project
。
我觉得我走的路不对。有没有一种方法既可以构建单元测试项目又可以构建和发布云服务项目?
好吧,虽然比我简单多了。
MSBuild 的 /target
参数可以接受多个依次构建的目标。我将构建定义更改为将 /target:Build;Publish
作为 msbuild 参数。这解决了问题。
我在 /t:Build;Publish
使用我的服务时遇到错误(没有为云服务指定入口点)。所以我做了 2 个单独的操作,一个使用 Build
,一个使用 Publish
,并且有效。
我使用 TF Build 创建了一个构建定义。这是我们项目的夜间构建。它应该 运行 定义的单元测试并且它应该打包 Azure 云服务项目。
这个构建已经 运行 宁宁了一段时间,没有打包步骤。这导致构建成功,同时 运行 单元测试。
根据以下指南,我添加了云服务的包装:https://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-continuous-delivery/。基本上它归结为在构建定义中将目标设置为 Publish for msbuild (/target:Publish)。
问题是,当使用发布目标构建解决方案时,不会构建单元测试项目。 MSBuild 将 return 显示以下消息: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>
- 将单元测试项目的输出类型设置为控制台应用程序
在这两种情况下,MSBuild 将为单元测试项目引用的所有项目提供 The specified project reference metadata for the reference "..\..csproj" is missing or has an invalid value: Project
。
我觉得我走的路不对。有没有一种方法既可以构建单元测试项目又可以构建和发布云服务项目?
好吧,虽然比我简单多了。
MSBuild 的 /target
参数可以接受多个依次构建的目标。我将构建定义更改为将 /target:Build;Publish
作为 msbuild 参数。这解决了问题。
我在 /t:Build;Publish
使用我的服务时遇到错误(没有为云服务指定入口点)。所以我做了 2 个单独的操作,一个使用 Build
,一个使用 Publish
,并且有效。