【发布时间】:2016-10-18 16:26:46
【问题描述】:
我正在使用 Visual Studio 2013 的默认构建模板。一段时间以来,我一直在使用预构建脚本/构建后脚本选项来运行 Powershell 脚本。我已经能够访问这些脚本中的环境变量,但现在我需要访问 Visual Studio 项目中定义的 properties。我想在构建后的 Powershell 脚本中访问的特定属性是 $Configuration。
我打开正在执行的构建的诊断。我可以确认该属性已传递到 msbuild 执行中以像这样构建项目
/p:Configuration="Release"
我像这样添加到构建后脚本参数(我也尝试过使用单引号/双引号/全部大写)
-Configuration $Configuration
在 Powershell 脚本本身中,我通过参数访问属性值,如下所示:
[CmdletBinding()]
param(
[string]$Configuration
)
然后我尝试像这样在Powershell脚本中写出这个参数的值
Write-Host "Checking Configuration: " + $Configuration
当我查看构建中的诊断信息时,我可以看到这一行,但问题是参数的值始终是我传递给构建后脚本参数的字符串文字,而不是替换参数值调试或发布。以下是一些打印内容的示例
检查配置:$Configuration
检查配置:“$Configuration”
检查配置:'$Configuration'
检查配置:$CONFIGURATION
是否可以做我想做的事情 - 项目属性是否可用于构建后脚本?通过阅读本网站上的其他问题以及其他网站上的帖子,这似乎应该是可能的。我缺少一些简单的复杂的东西吗?谢谢!
【问题讨论】:
-
您是否尝试过使用
-Configuration $(Configuration)传递参数?这就是它通常在 VS 设置中完成的方式,因为它进入了由 msbuild 解释的项目文件,而 $(property) 是 msbuild 使用的语法 -
是的 - 我尝试过与括号组合,如 $(CONFIGURATION) OR $(Configuration) OR '$(Configuration)' 但构建诊断的最终结果是相同的,我得到的输出如下“检查配置:+ $(CONFIGURATION)”或“检查配置:+ $(配置)”或“检查配置:+'$(配置)'”。为了确定,我再次尝试了这些组合。
标签: powershell visual-studio-2013 msbuild