我可以输入Update-Database,Enable-Migrations等等,从包管理器控制台,它工作正常.
如果我需要从常规的PowerShell会话或psake构建文件中执行相同的操作,那么我该如何操作呢?
我尝试导入模块EntityFramework.5.0.0\tools\EntityFramework.psm1从包目录,我没有得到的Update-Database,Enable-Migrations功能的,但我不能提供他们的观点-他们需要一个项目,源代码和6个-而且是没有任何文档.我是否可以在CI链中的某台机器上自动部署数据库?
我想在构建时将visual studio设置为默认使用Psake构建.这可能比他的价值更多的努力吗?
我想$VerbosePreference在我的构建脚本中使用Verbose preference().我使用的巧克力 psake的版本(所以调用批处理文件),我不能让它在所有很好地工作.
该-Verbose交换机的工作原理都没有.我最后添加了一个属性并将其传入.它被传入然后我将其设置$VerbosePreference为'Continue',如果它是真的,否则'SilentlyContinue'.我创建了一个执行此操作的函数.在那个功能中,如果我打电话Write-Verbose,它就有效.但是在任务中,它没有.如果我$VerbosePreference在任务中设置,它不起作用.基本上,我不能Write-Verbose在任务中使用.我在这里错过了什么概念?完全flumoxed ...
我有一个简单的psake脚本:
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"
}
Run Code Online (Sandbox Code Playgroud)
我从命令行调用它,如下所示:
& .\psake.ps1 .\deploy.ps1 -properties @{"Config"="Staging"}
我希望$DeployBaseDir等于SOLUTIONDIR\RMSS.Setup.WiX\bin\Staging
但相反,我得到这个输出:
CONFIG = Staging
SOLUTIONDIR = SOLUTIONDIR
DEPLOYBASEDIR = SOLUTIONDIR\RMSS.Setup.WiX\bin\Debug
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我发生了什么,为什么,以及如何获得我期望的行为?
我用Chocolatey安装了psake.这允许您使用psakepowershell或Windows命令行中的命令运行psake .
但是当我尝试使用以下命令将属性传递给psake时
psake TestProperties -properties @{"tags"="test"}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
PS D:\projects\WebTestAutomation> psake TestProperties -properties @{"tags"="test"}
"& 'C:\Chocolatey\lib\psake.4.2.0.1\tools\\psake.ps1' TestProperties -properties System.Collections.Hashtable
C:\Chocolatey\lib\psake.4.2.0.1\tools\psake.ps1 : Cannot process argument transformation on parameter 'properties'. Cannot convert the "System.Collections.Hashtable" value of
type "System.String" to type "System.Collections.Hashtable".
At line:1 char:80
+ & 'C:\Chocolatey\lib\psake.4.2.0.1\tools\\psake.ps1' TestProperties -properties <<<< System.Collections.Hashtable; if ($psake.build_success -eq $false) { exit 1 } else { e
xit 0 }
+ CategoryInfo : InvalidData: (:) [psake.ps1], ParameterBindin...mationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,psake.ps1
Run Code Online (Sandbox Code Playgroud)
有关如何克服这一点的任何想法
我有以下psake脚本
properties {
$ApplicationName = "test"
$ApplicationPath = "c:\this\is\$ApplicationName"
}
Task test {
"ApplicationName = $ApplicationName"
"ApplicationPath = $ApplicationPath"
}
Run Code Online (Sandbox Code Playgroud)
我想只将ApplicationName传递给脚本,以避免键入整个应用程序路径.但是当我使用-parameters标志时,不会对属性应用任何更改
Invoke-psake .\script.ps1 -parameters @{ApplicationName = "another_test"} test
ApplicationName = test
ApplicationPath = c:\this\is\test
Run Code Online (Sandbox Code Playgroud)
这听起来不对,因为应该在任何属性块之前评估参数.当我使用该-properties标志时,应用程序名称被更改,但不是路径
Invoke-psake .\script.ps1 -properties @{ApplicationName = "another_test"} test
ApplicationName = another_test
ApplicationPath = c:\this\is\test
Run Code Online (Sandbox Code Playgroud)
所以属性已经初始化了,但不应该-parameters覆盖这种行为?
扩展C#解决方案或构建自动化脚本..如果它用于构建解决方案,为什么它必须使用MSbuild ...而且还将在其中编写清理脚本
我想获取执行脚本的当前目录,而不是脚本的当前执行目录。
该脚本位于 'd:\projects\code\development.tools' 中,我想要位于 'd:\projects\code\development\ace\ace.testing' 中的项目目录
现在,当我在 Psake Properties 之外执行“Write-Host $Env:PWD”或“$Env:PWD”时,我实际上得到了我想要的东西,但是当我尝试从 Properties 中获取它时,它会返回什么$PWD 返回,这是脚本的执行目录。
Write-Host $Env:PWD # returns d:\projects\code\development\ace\ace.testing
Properties {
$baseDir = $Env:PWD # returns d:\projects\code\development\.tools
}
Run Code Online (Sandbox Code Playgroud)
我不确定这里发生了什么,但我无法弄清楚。
我试图将正确的路径存储在一个变量中,但它并没有真正起作用。
更新:
花了几个小时后,我意识到它确实有效!我正在断断续续地编写该脚本,并在某处放置了一个 throw 语句,却忘记了它在那里!所以我认为 Psake 正在做一些奇怪的事情,因此它不起作用,但是 Psake 是纯粹的!;)
因此,如果您想获取正在执行脚本的当前目录 $Env:PWD 似乎可以做到!:)
试图让PSAKE脚本工作.似乎任务没有执行其中的功能?
我有2个文件
-- default.ps1 --
Import-Module "C:\dev\Phoenix\trunk\Build\BuildScripts\include.ps1"
Import-Module "C:\Software\PSAKE\JamesKovacs-psake-b0094de\psake.psm1"
Invoke-psake "C:\dev\Phoenix\trunk\Build\BuildScripts\build.ps1"
remove-module psake
-- build.ps1 --
$framework = '4.0'
properties {
$root_dir = 'c:\dev\Phoenix\trunk\'
$integration_deploy_dir = '\\Server025\Phoenix_IntegrationTests\'
$build_scripts_dir = '$root_dir\Build\BuildScripts'
$test_dir = Join-Path $root_dir '\Tests\Core.UnitTests\bin\Debug'
$dll = Join-Path $test_dir 'Phoenix.Core.UnitTests.dll'
}
task default -depends Test
task MsBuild { exec { msbuild /version }}
task Test -depends Deploy
{
Write-Host "Start task Test"
Add-PSSnapIn Gallio
Write-Host "TEST -- $dll"
Test-Gallio $test_dir Release x64 $dll "Core.UnitTests" ## FYI - call to include …Run Code Online (Sandbox Code Playgroud)