GenerateTemporaryTargetAssembly 工作
如果專案中有至少一個 XAML 網頁參考該專案中本機宣告的類型,GenerateTemporaryTargetAssembly 工作會產生組件。 建置流程完成之後,或如果建置流程失敗,都會將產生的組件移除。
工作參數
參數 | 描述 |
---|---|
AssemblyName |
必要的 String 參數。 指定為專案所產生之組件的簡短名稱,它也是暫時產生之目標組件的名稱。 例如,如果專案產生名稱為 WinExeAssembly.exe 的 Windows 可執行檔,AssemblyName 參數的值會是 WinExeAssembly。 |
CompileTargetName |
必要的 String 參數。 指定用來從原始程式碼檔產生組件的 MSBuild 目標名稱。 一般的 CompileTargetName 值為 CoreCompile。 |
CompileTypeName |
必要的 String 參數。 指定由 CompileTargetName 參數所指定目標來執行的編譯型別。 對於 CoreCompile 目標,此值是 Compile。 |
CurrentProject |
必要的 String 參數。 指定 MSBuild 專案檔的完整路徑,以供需要暫存目標組件的專案使用。 |
GeneratedCodeFiles |
選擇性的 ITaskItem[] 參數。 指定 MarkupCompilePass1 工作產生的語言特定 Managed 程式碼檔的清單。 |
IntermediateOutputPath |
必要的 String 參數。 指定要在其中產生暫存目標組件的目錄。 |
MSBuildBinPath |
必要的 String 參數。 指定編譯暫存目標組件時所需的 MSBuild.exe 位置。 |
ReferencePath |
選擇性的 ITaskItem[] 參數。 依照路徑與檔案名稱,指定編譯為暫存目標組件的型別所參考的組件清單。 |
ReferencePathTypeName |
必要的 String 參數。 指定可指定組件參考 (ReferencePath) 清單的編譯目標 (CompileTargetName) 參數所使用的參數。 適當值為 ReferencePath。 |
備註
第一個標記編譯階段 (由 MarkupCompilePass1 所執行) 會將 XAML 檔案編譯為二進位格式。 因此,編譯器需要包含 XAML 檔案所使用型別的參考組件清單。 不過,如果 XAML 檔案使用相同專案中定義的型別,在建置專案之前,都不會建立該專案的對應組件。 因此,在第一個標記編譯階段期間,無法提供組件參考。
MarkupCompilePass1 會改為將含有相同專案中型別參考的 XAML 檔案轉換,延後至第二個標記編譯階段 (由 MarkupCompilePass2 所執行) 執行。 在執行 MarkupCompilePass2 之前,會產生暫存組件。 此組件包含延後其標記編譯階段的 XAML 檔案所使用的型別。 當 MarkupCompilePass2 執行以允許將延後編譯的 XAML 檔案轉換為二進位格式時,會將所產生組件的參考提供給它。
範例
下列範例會產生暫存組件,因為 Page1.xaml 包含相同專案中類型的參考。
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask
TaskName="Microsoft.Build.Tasks.Windows.GenerateTemporaryTargetAssembly"
AssemblyFile="C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationBuildTasks.dll" />
<Target Name="GenerateTemporaryTargetAssemblyTask">
<GenerateTemporaryTargetAssembly
AssemblyName="WPFMSBuildSample"
CompileTargetName="CoreCompile"
CompileTypeName="Compile"
CurrentProject="FullBuild.proj"
GeneratedCodeFiles="obj\debug\app.g.cs;obj\debug\Page1.g.cs;obj\debug\Page2.g.cs"
ReferencePath="c:\windows\Microsoft.net\Framework\v2.0.50727\System.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\PresentationCore.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\PresentationFramework.dll;C:\Program Files\Reference Assemblies\Microsoft\WinFx\v3.0\WindowsBase.dll"
IntermediateOutputPath=".\obj\debug\"
MSBuildBinPath="$(MSBuildBinPath)"
ReferencePathTypeName="ReferencePath"/>
</Target>
</Project>