【问题标题】:Visual Studio 2013 Build Post-Build Powershell ScriptVisual Studio 2013 构建后构建 Powershell 脚本
【发布时间】: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


【解决方案1】:

我遇到了同样的问题,并通过将变量添加到 环境变量 到 XAML 构建中的 Run Script 任务中来解决。

【讨论】:

    猜你喜欢
    • 2018-03-06
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多