首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么psake没有按照我期望的方式评估我的属性呢?

为什么psake没有按照我期望的方式评估我的属性呢?
EN

Stack Overflow用户
提问于 2013-03-27 05:33:24
回答 2查看 1.3K关注 0票数 4

我有一个简单的psake脚本:

代码语言:javascript
复制
properties {
    $SolutionDir = "SOLUTIONDIR" # Resolve-Path ".\src"
    $Config = "Debug"
    $DeployBaseDir = "$SolutionDir\RMSS.Setup.WiX\bin\$Config"
    $InstallerName = "RMSForMoversSuite_2_0_0"
}

task default -depends Test

task Test {
    "CONFIG = $Config"
    "SOLUTIONDIR = $SolutionDir"
    "DEPLOYBASEDIR = $DeployBaseDir"
}

我从命令行调用它,如下所示:

& .\psake.ps1 .\deploy.ps1 -properties @{"Config"="Staging"}

我期望$DeployBaseDirSOLUTIONDIR\RMSS.Setup.WiX\bin\Staging相等

但是,我得到了下面的输出:

代码语言:javascript
复制
CONFIG = Staging
SOLUTIONDIR = SOLUTIONDIR
DEPLOYBASEDIR = SOLUTIONDIR\RMSS.Setup.WiX\bin\Debug

谁能告诉我发生了什么,为什么,以及如何获得我期望的行为?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-27 13:18:28

从这里开始http://codebetter.com/jameskovacs/2010/04/12/psake-v4-00/

对参数和属性的支持

Invoke-psake有两个新选项:-parameters和-properties。参数是传递到当前构建脚本中的哈希表。这些参数在构建脚本中的任何“Properties”函数之前被处理,这意味着您可以在Properties中使用它们。

代码语言:javascript
复制
invoke-psake Deploy.ps1 -parameters @{server=’Server01’}

# Deploy.ps1
properties {
  $serverToDeployTo = $server
    }

task default -depends All

当您有所需的信息时,参数非常有用。另一方面,属性用于覆盖默认值。

代码语言:javascript
复制
invoke-psake Build.ps1 -properties @{config='Release'}

# Build.ps1
properties {
  $config = 'Debug'
}

task default -depends All

因此,您可以将$Config从属性中提取出来,并将其作为参数传递。

或者从属性中取出$DeployBaseDir并在任务块中创建它

票数 11
EN

Stack Overflow用户

发布于 2014-05-20 10:30:21

如果您仍然希望在使用属性的默认值的同时使用参数,这里是示例操作指南。

代码语言:javascript
复制
properties {
    $SolutionDir = "SOLUTIONDIR" # Resolve-Path ".\src"
    $Config = if($config){$config} else {"Debug"};
    $DeployBaseDir = "$SolutionDir\RMSS.Setup.WiX\bin\$Config"
    $InstallerName = "RMSForMoversSuite_2_0_0"
}

task default -depends Test

task Test {
    "CONFIG = $Config"
    "SOLUTIONDIR = $SolutionDir"
    "DEPLOYBASEDIR = $DeployBaseDir"
}

& .\psake.ps1 .\deploy.ps1 -parameters @{config="Staging"}

(使用psake 4.3.2测试)

这鼓励使用约定而不是配置,让老学生可以继续使用他们的配置意大利面条。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15647824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档