2009-12-08 2 views
7

Что я хочу - это один файл, который я могу дважды щелкнуть, чтобы запустить необходимый процесс сборки, используя psake.Как использовать psake из пакетного файла?

Я новичок в psake и PowerShell, поэтому будьте нежны :-).

То, что я сейчас 3 файлов:

Файл 1: build.bat

PowerShell -ExecutionPolicy Unrestricted -File .\Build.ps1 %1 

Файл 2: Build.ps1

Import-Module .\psake.psm1 
Invoke-psake .\BuildTasks.ps1 $args 

Файл 3: BuildTasks.ps1

task default -depends Verify, Joe 

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

task Joe { 
    write-host "hello from Joe" 
} 

Есть ли способ слить Build.ps1 и BuildTasks.ps1 в один файл?

ответ

8

Вы должны быть в состоянии сделать это с

powershell -Command "& {Import-Module .\psake.psm1; Invoke-psake .\BuildTasks.ps1 %*}" 

, который избавляется от файла build.ps1.

+0

Johannes. Спасибо, кучи. Только одно исправление. Вместо $ args требуется% 1. PowerShell -ExecutionPolicy Unrestricted -Command "& {Import-Module. \ Psake.psm1; Invoke-psake. \ BuildTasks.ps1% 1}" –

+0

Eep, вы правы. Сожалею. – Joey

1

Psake поставляется с скриптом powershell "psake.ps1", который завершает вызов для вас. Это выглядит следующим образом:

import-module .\psake.psm1 
invoke-psake @args 
remove-module psake 

Так что ваша партия сценарий выглядит

powershell {path-to-module}\psake.ps1 .\buildTasks.ps1 
+0

Файл psake.ps1, который вы упомянули, отлично подходит для передачи задач в вызов invoke-psake, но в тот момент, когда вы пытаетесь передать hashtables (аргументы -parameters и -properties), он терпит неудачу. По крайней мере, я не смог заставить его работать. – Jimit