Exec 工作

使用指定的引數來執行指定的程式或命令。

參數

下表說明 Exec 工作的參數。

參數 描述
Command 必要的 String 參數。

一或多個要執行的命令。 這些可以是系統命令 (例如 attrib) 或可執行檔 (例如 program.exe、runprogram.bat 或 setup.msi)。

此參數可以包含多行命令。 或者,您可以將多個命令放在一個批次檔中,然後使用此參數來執行該批次檔。
ConsoleOutput 選擇性的 ITaskItem[] 輸出參數。

每個項目輸出都是工具發出的標準輸出或標準錯誤資料流。 這只有在 ConsoleToMsBuild 設為 true 時才會擷取。
ConsoleToMsBuild 選擇性的 Boolean 參數。

如果為 true,工作會擷取工具的標準錯誤和標準輸出,讓它們可在 ConsoleOutput 輸出參數中使用。

預設值:false
CustomErrorRegularExpression 選擇性的 String 參數。

指定在工具輸出中用來檢查錯誤行的規則運算式。 這適用於會產生異常格式之輸出的工具。

預設值:null (沒有自訂處理)。
CustomWarningRegularExpression 選擇性的 String 參數。

指定在工具輸出中用來檢查警告行的規則運算式。 這適用於會產生異常格式之輸出的工具。

預設值: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 字碼頁。 有效值為 AlwaysNeverDetect。 預設值為 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,而不會直接叫用程序。

IgnoreExitCodeIgnoreStandardErrorWarningFormat 參數會影響工作傳回 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>

另請參閱