标签: psake

在Cake 6.0代码库的psake构建中强制使用MSBuild 14.0

我最近更新到Visual Studio 2015并使用新的C#6.0功能.在VS中,一切都正确构建.

但是,我使用PSake作为构建脚本语言,并且构建总是在我使用c#6.0功能的地方失败.如何告诉psake使用MSBuild 14.0,以便正确构建新的c#6.0功能?

尝试和失败:

  • 将框架版本传递给psake:未知的.NET Framework版本,4.6

  • 在调用psake之前调用VS2015的vsvars32.bat.PSake仍然使用旧的MSBuild版本.

msbuild psake c#-6.0 visual-studio-2015

11
推荐指数
1
解决办法
3425
查看次数

如何使用PSAKE发布网站

有没有办法使用PSAKE发布asp.net Web应用程序,就像visual studio一样?

asp.net publish psake

8
推荐指数
2
解决办法
2232
查看次数

如何在TeamCity的概述页面上显示msbuild错误

我想将PowerShell与Psake和TeamCity配合使用来配置我的CI.我曾经使用标准的Msbuild运行程序,但现在我编写了自己的脚本来构建解决方案,但是当msbuild失败时我遇到了问题.

当我使用Msbuild runner并且构建失败时,然后在Overview页面上出现新的"Build errors"部分,我有来自msbuild的详细信息.但是当我编写自定义脚本时,我只得到错误"进程退出代码1",我不知道如何"创建"此构建错误部分.你知道怎么做吗?我知道我可以使用服务消息,但我无法处理来自msbuild的失败日志.

task compile {
try {
   exec { msbuild $code_dir\SampleSolution.sln /t:Build /p:Configuration=Release }
} catch {
   Write-Host $_ #only information that error occured, but without any msbui details
} }
Run Code Online (Sandbox Code Playgroud)

powershell psake teamcity-7.1

8
推荐指数
1
解决办法
1130
查看次数

Psake和robocopy失败

Robocopy将以高于0的代码退出,但仍可能不是失败.PSake检测到0以上的任何内容为失败并且无法构建.这很好,但是为什么这仍然失败:

task Deploy {    
        robocopy $source $dest /NP /S /XO /NFL /NDL /NJH /NJS | Out-Default

    if ($lastexitcode -eq 3)
    {
       Write-Host "Got Here"
       $lastexitcode = 0       
    }

    Write-Host "Deploy local complete"
    Write-Host $lastexitcode
}

TaskTearDown {  
    if ($LastExitCode -ne 0) {
        write-host "Build failed"
        exit 1
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以验证Deploy if语句是否被命中,Write-Host输出0正确,但TaskTearDown仍然检测到最后一个退出代码为3!我该如何解决?

powershell robocopy psake

8
推荐指数
1
解决办法
2278
查看次数

PSake扩展?

我最近发现了Powershell并通过那个PSake.如果您正在使用它并且已经扩展或为其创建任务,请分享!

build-automation powershell scripting psake

7
推荐指数
1
解决办法
1843
查看次数

如何从批处理文件中使用psake?

我想要的是一个我可以双击的文件,它将使用psake运行所需的构建过程.

我是psake和PowerShell的新手所以要温柔:-).

我现在有3个文件:

文件1:Build.bat

PowerShell -ExecutionPolicy Unrestricted -File .\Build.ps1 %1
Run Code Online (Sandbox Code Playgroud)

文件2:Build.ps1

Import-Module .\psake.psm1
Invoke-psake .\BuildTasks.ps1 $args
Run Code Online (Sandbox Code Playgroud)

文件3:BuildTasks.ps1

task default -depends Verify, Joe

task Verify {
    write-host "hello from Verify!"
}

task Joe {
    write-host "hello from Joe"
}
Run Code Online (Sandbox Code Playgroud)

无论如何将Build.ps1和BuildTasks.ps1合并到一个文件中?

build batch-file psake

7
推荐指数
1
解决办法
1697
查看次数

将命令行参数注入psake

我想将命令行参数注入到我的psake构建脚本中,如:.\ build.ps1 Deploy environment ="development"

但psake会将每个论点视为一个任务,并将回答"任务不存在"

是否可以在psake中注入命令行参数?

build.ps1 -->
Import-Module '.\psake.psm1'
Invoke-psake '.\tasks.ps1' $args
Remove-Module psake
Run Code Online (Sandbox Code Playgroud)

powershell psake

7
推荐指数
1
解决办法
3403
查看次数

由TeamCity触发的构建步骤始终构建 - 即使没有更改

问题:我正在将TeamCity设置为ASP.NET MVC项目的构建服务器.我正在使用Powershell和psake对我们的.csproj文件运行msbuild并创建一个可部署的包.从构建服务器,我可以打开powershell,运行脚本,因为没有源代码更改,msbuild不会重新生成项目DLL文件.但是,当我从TeamCity Web界面调用完全相同的脚本时,即使没有任何更改,msbuild也会重建并重新生成DLL文件.不是它应该做的AFAIK.

我把这个问题缩小到一步.为了简单起见,我设置了我的TeamCity配置,因此它没有使用任何源代码控制,它运行一个调用我的PowerShell脚本的"powershell"构建步骤.

powershell脚本运行单个命令:

exec { &$msbuild $ProjectFile /t:Package "/p:PackageLocation=$PackageFile;OutDir=$TempPath;Configuration=$Config;SolutionDir=$BaseDir\Source\" /v:m }
Run Code Online (Sandbox Code Playgroud)

当我从powershell命令行手动调用脚本时,我看到:

CoreCompile:
Skipping target "CoreCompile" because all output files are up-to-date with respect to the input files.
Run Code Online (Sandbox Code Playgroud)

当我通过TeamCity调用完全相同的脚本时,我看到:

[11:11:26]: CoreCompile:
[11:11:26]:   c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig ...
<SNIP>
[11:11:32]: CopyFilesToOutputDirectory:
[11:11:32]:   Copying file from "obj\Demo\Website.Web.dll" to "d:\deploy\Build\package\Demo\temp\Website.Web.dll".
[11:11:32]:   Website.Web -> d:\deploy\Build\package\Demo\temp\Website.Web.dll
[11:11:32]:   Copying file from "obj\Demo\Website.Web.pdb" to "d:\deploy\Build\package\Demo\temp\Website.Web.pdb".
[11:11:32]: _CopyWebApplicationLegacy:
[11:11:32]:   Copying Web Application Project Files for Website.Web
[11:11:32]:   Copying file from "obj\Demo\Website.Web.dll" to "d:\deploy\Build\package\Demo\temp\_PublishedWebsites\Website.Web\bin\Website.Web.dll".
[11:11:32]:   Copying file from …
Run Code Online (Sandbox Code Playgroud)

msbuild asp.net-mvc powershell teamcity psake

6
推荐指数
1
解决办法
1507
查看次数

Powershell和PSake从哪里执行msbuild?

在进行构建自动化时,我遇到了一个问题.随着Visual Studio 2013的升级,MSBuild的路径已按此处所述移动http://timrayburn.net/blog/visual-studio-2013-and-msbuild/

我已经更新了系统路径以指向msbuild的这个新位置.使用常规cmd提示msbuild解析就好了.但是在PowerShell中运行我的脚本,它似乎仍然拿起旧脚本,并显示链接中描述的问题.如何查看和更改powershell和psake从哪里获取msbuild,所以我可以指向预期的版本?

msbuild powershell psake visual-studio-2013

6
推荐指数
1
解决办法
1520
查看次数

Psake忽略属性和参数

使用psake 4.5.0我试着运行我的default.ps1文件很多不同的方法,同时传递-properties-parameters,但这些值只是忽略在根范围中的.ps1-script.

执行relative(在子文件夹中使用psake):

.\psake-4.5.0\psake.ps1 .\default.ps1 BuildSolution -properties @{"a"="a";"b"="b";"c"="c";"d"="d"} -parameters @{"w"="w";"x"="x";"y"="y";"z"="z"}
Run Code Online (Sandbox Code Playgroud)

使用导入的模块执行:

Import-Module .\psake-4.5.0\psake.psm1

Invoke-Psake .\default.ps1 BuildSolution -properties @{"a"="a";"b"="b";"c"="c";"d"="d"} -parameters @{"w"="w";"x"="x";"y"="y";"z"="z"}
Run Code Online (Sandbox Code Playgroud)

通过安装的Chocolatey-package执行:

psake .\default.ps1 BuildSolution -properties "@{'a'='a';'b'='b';'c'='c';'d'='d'}" -parameters "@{'w'='w';'x'='x';'y'='y';'z'='z'}"
Run Code Online (Sandbox Code Playgroud)

执行cmd.exe:

psake-4.5.0\psake.cmd default.ps1 BuildSolution -properties "@{'a'='a';'b'='b';'c'='c';'d'='d'}" -parameters "@{'w'='w';'x'='x';'y'='y';'z'='z'}"
Run Code Online (Sandbox Code Playgroud)

现在,default.ps1只是调试所有这些值:

// Since "properties" doesn't get populated, I also try "Param"
Param(
    $w = $w, // Trying to populate from passed param
    $x …
Run Code Online (Sandbox Code Playgroud)

continuous-integration build-process build psake

6
推荐指数
1
解决办法
420
查看次数