如何使用 VSTS 将变量传递给 MSBuild
How to pass variables to MSBuild with VSTS
我正在以 Teamcity 用户的眼光看待 VSTS Build。我想设置多个构建,每个构建都具有相同的一组参数供 MSBuild 使用。例如,我希望我的所有构建共享 CreateHardLinksForCopyFilesToOutputDirectoryIfPossible 参数。
我知道我可以在我设置的每个构建配置中手动写出 /p:CreateHardLinksForCopyFilesToOutputDirectoryIfPossible=true
,但我更愿意使用变量系统设置一次。但是,当我使用变量编辑器设置我的变量时,VSTS 代理 将变量名称转换为大写 (以及将“.”转换为“_”和其他转换),这意味着msbuild 不查看它们(它期待正确的 PascalCased 版本)。我已经通过在构建期间回显所有当前环境变量来验证这一点。我看不到任何关于为什么会发生这种情况的文档。
是否有通过变量系统传递 MSBuild 参数的模式?
VSTS变量名不区分大小写。你只需要关注变量的值。
比如您的变量 tHisIsMixEdCase
的值为 /p:CreateHardLinksForCopyFilesToOutputDirectoryIfPossible=true
。
那么无论在MSBuild参数选项中使用$(THISISMIXEDCASE)
还是$(tHisIsMixEdCase)
,它们都与直接使用/p:CreateHardLinksForCopyFilesToOutputDirectoryIfPossible=true
一样。
我正在以 Teamcity 用户的眼光看待 VSTS Build。我想设置多个构建,每个构建都具有相同的一组参数供 MSBuild 使用。例如,我希望我的所有构建共享 CreateHardLinksForCopyFilesToOutputDirectoryIfPossible 参数。
我知道我可以在我设置的每个构建配置中手动写出 /p:CreateHardLinksForCopyFilesToOutputDirectoryIfPossible=true
,但我更愿意使用变量系统设置一次。但是,当我使用变量编辑器设置我的变量时,VSTS 代理 将变量名称转换为大写 (以及将“.”转换为“_”和其他转换),这意味着msbuild 不查看它们(它期待正确的 PascalCased 版本)。我已经通过在构建期间回显所有当前环境变量来验证这一点。我看不到任何关于为什么会发生这种情况的文档。
是否有通过变量系统传递 MSBuild 参数的模式?
VSTS变量名不区分大小写。你只需要关注变量的值。
比如您的变量 tHisIsMixEdCase
的值为 /p:CreateHardLinksForCopyFilesToOutputDirectoryIfPossible=true
。
那么无论在MSBuild参数选项中使用$(THISISMIXEDCASE)
还是$(tHisIsMixEdCase)
,它们都与直接使用/p:CreateHardLinksForCopyFilesToOutputDirectoryIfPossible=true
一样。