Exec 工作
使用指定的引數來執行指定的程式或命令。
參數
下表說明 Exec
工作的參數。
參數 | 描述 |
---|---|
Command |
必要的 String 參數。一或多個要執行的命令。 這些可以是系統命令 (例如 attrib) 或可執行檔 (例如 program.exe、runprogram.bat 或 setup.msi)。 此參數可以包含多行命令。 或者,您可以將多個命令放在一個批次檔中,然後使用此參數來執行該批次檔。 |
ConsoleOutput |
選擇性的 ITaskItem[] 輸出參數。每個項目輸出都是工具發出的標準輸出或標準錯誤資料流。 這只有在 ConsoleToMsBuild 設為 true 時才會擷取。 |
ConsoleToMsBuild |
選擇性的 Boolean 參數。如果為 true ,工作會擷取工具的標準錯誤和標準輸出,讓它們可在 ConsoleOutput 輸出參數中使用。預設值: false 。 |
CustomErrorRegularExpression |
選擇性的 String 參數。指定在工具輸出中用來檢查錯誤行的規則運算式。 這適用於會產生異常格式之輸出的工具。 除非 IgnoreStandardErrorWarningFormat 指定,否則這個正則表達式除了標準表達式之外。預設值: null (沒有自訂處理)。 |
CustomWarningRegularExpression |
選擇性的 String 參數。指定在工具輸出中用來檢查警告行的規則運算式。 這適用於會產生異常格式之輸出的工具。 除非 IgnoreStandardErrorWarningFormat 指定,否則這個正則表達式除了標準表達式之外。預設值: null (沒有自訂處理)。 |
EchoOff |
選擇性的 Boolean 參數。如果為 true ,工作不會將 Command 的展開表單發出至 MSBuild 記錄。預設值: false 。 |
ExitCode |
選擇性 Int32 輸出唯讀參數。指定所執行命令提供的結束代碼,除非工作記錄了任何錯誤,但程序的結束代碼為 0 (成功), ExitCode 會設定為 -1。 |
IgnoreExitCode |
選擇性的 Boolean 參數。如果是 true ,工作就會略過已執行命令提供的結束代碼。 否則,如果已執行的命令傳回非零的結束代碼,工作就會傳回 false 。預設值: false 。 |
IgnoreStandardErrorWarningFormat |
選擇性的 Boolean 參數。如果 false 為 ,則會選取輸出中符合 標準錯誤/警告格式的行,並將其記錄為錯誤/警告。 如果是 true ,即會停用此行為。預設值: false 。 |
Outputs |
選擇性的 ITaskItem[] 輸出參數。包含來自工作的輸出項目。 Exec 工作本身不會設定這些項目。 相反地,您可以提供項目,就像工作本身已設定一樣,如此一來,稍後就能在專案中使用它們。 |
StdErrEncoding |
選擇性的 String 輸出參數。指定所擷取工作標準錯誤資料流的編碼方式。 預設值是目前的主控台輸出編碼方式。 |
StdOutEncoding |
選擇性的 String 輸出參數。指定所擷取工作標準輸出資料流的編碼方式。 預設值是目前的主控台輸出編碼方式。 |
UseUtf8Encoding |
選擇性的 String 參數。指定在處理所執行命令的命令列時,是否要使用 UTF8 字碼頁。 有效值為 Always 、Never 或 Detect 。 預設值為 Detect ,這表示只有在非 ANSI 字元存在時,才使用 UTF8 字碼頁。 |
WorkingDirectory |
選擇性的 String 參數。指定將執行命令的目錄。 預設值:專案的目前工作目錄。 |
ToolTaskExtension 參數
此工作繼承自 ToolTaskExtension 類別,該類別繼承自 ToolTask 類別,而其本身繼承自 Task 類別。 此繼承鏈結將數個參數加入至從它們衍生的工作。
下表說明基底類別的參數:
參數 | 描述 |
---|---|
EchoOff | 選擇性的 bool 參數。當設定為 true 時,此工作會將 /Q 傳遞至 cmd.exe 命令列,使命令列不會被複製到 stdout。 |
EnvironmentVariables | 選擇性 String 陣列參數。環境變數定義的陣列 (以分號分隔)。 每個定義都應該指定以等號分隔的環境變數名稱和值。 這些變數是在規則環境區塊以外傳遞至繁衍的可執行檔,或選擇性地覆寫。 例如: Variable1=Value1;Variable2=Value2 。 |
ExitCode | 選擇性 Int32 輸出唯讀參數。指定已執行命令提供的結束代碼。 如果工作已記錄任何錯誤,但是此程序具有結束代碼 0 (成功),這會設為 -1。 |
LogStandardErrorAsError | 選擇性的 bool 參數。如果為 true ,則標準錯誤資料流上收到的所有訊息都會記錄為錯誤。 |
StandardErrorImportance | 選擇性的 String 參數。用來從標準錯誤資料流記錄文字的重要性。 |
StandardOutputImportance | 選擇性的 String 參數。用來從標準輸出資料流記錄文字的重要性。 |
Timeout | 選擇性的 Int32 參數。指定時間量 (以毫秒為單位),在此時間量之後會終止工作可執行檔。 預設值是 Int.MaxValue ,表示沒有逾時期間。 逾時是以毫秒為單位。 |
ToolExe | 選擇性的 string 參數。專案可能會實作此項目以覆寫 ToolName。 工作可能會覆寫此項目以保留 ToolName。 |
ToolPath | 選擇性的 string 參數。指定位置,工作會從該位置載入基礎可執行檔。 如果未指定這個參數,工作會使用 SDK 安裝路徑,對應於執行 MSBuild 的架構版本。 |
UseCommandProcessor | 選擇性的 bool 參數。當設為 true 時,這項工作會針對命令列建立批次檔,並且使用命令處理器來執行,而不是直接執行命令。 |
YieldDuringToolExecution | 選擇性的 bool 參數。當設為 true 時,這項工作在執行其工作時,會產生節點。 |
備註
若無法針對您想要執行的作業取得特定的 MSBuild 工作,此工作就非常有用。 不過,Exec
工作不同於更特定的工作,無法根據其執行之工具或命令的結果進行其他處理或條件式作業。
Exec
工作會在 Windows 上呼叫 cmd.exe,否則呼叫 sh,而不會直接叫用程序。
IgnoreExitCode
和 IgnoreStandardErrorWarningFormat
參數會影響工作傳回 false
的條件,並指出錯誤。 使用預設設定 (兩者的 false
),如果可執行檔有非零結束代碼,或是在可執行檔的標準錯誤資料流中找到診斷訊息,則 Exec
工作會指出失敗 (傳回 false
)。 如果您只想要 Exec
在可執行檔傳回非零結束代碼時指出失敗,請將 IgnoreStandardErrorWarningFormat
設定為 true
。
範例
下列範例會使用 Exec
工作來執行命令。
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Binaries Include="*.dll;*.exe"/>
</ItemGroup>
<Target Name="SetACL">
<!-- set security on binaries-->
<Exec Command="echo y| cacls %(Binaries.Identity) /G everyone:R"/>
</Target>
</Project>