Задача GenerateTemporaryTargetAssembly
Задача GenerateTemporaryTargetAssembly создает сборку, если хотя бы одна страница Язык XAML (Extensible Application Markup Language) в проекте ссылается на тип, объявленный в этом проекте локально. Созданная сборка удаляется после завершения или сбоя процесса построения.
Параметры задачи
Параметр |
Описание |
---|---|
AssemblyName |
Обязательный параметр String. Задание короткого имени сборки, созданной для проекта, которое также является именем временно создаваемой конечной сборки. Например, если проект создает исполняемый файл Windows с именем WinExeAssembly.exe, то параметр AssemblyName имеет значение WinExeAssembly. |
CompileTargetName |
Обязательный параметр String. Указание имени целевого объекта MSBuild (Microsoft build engine), используемого для создания сборок из файлов исходного кода. CompileTargetName обычно имеет значение CoreCompile. |
CompileTypeName |
Обязательный параметр String. Указание типа компиляции, выполняемой целевым объектом, заданным с помощью параметра CompileTargetName. Для целевого объекта CoreCompile используется значение Compile. |
CurrentProject |
Обязательный параметр String. Указание полного пути к файлу проекта MSBuild для проекта, которому требуется создание временной конечной сборки. |
GeneratedCodeFiles |
Необязательный параметр ITaskItem[]. Задание списка файлов управляемого кода для конкретного языка, созданных задачей Задача MarkupCompilePass1. |
IntermediateOutputPath |
Обязательный параметр String. Задание каталога, в котором создается временная конечная сборка. |
MSBuildBinPath |
Обязательный параметр String. Указание расположения файла MSBuild.exe, необходимого для компиляции временной конечной сборки. |
ReferencePath |
Необязательный параметр ITaskItem[]. Задание списка сборок с указанием пути и имени файла, на которые ссылаются типы, скомпилированные во временную конечную сборку. |
ReferencePathTypeName |
Обязательный параметр String. Указание параметра, используемого параметром целевого объекта компиляции (CompileTargetName), который задает список ссылок на сборку (ReferencePath). Допустимым значением является ReferencePath. |
Заметки
Во время первого прохода компиляции разметки, запущенного задачей Задача MarkupCompilePass1, файлы Язык XAML компилируются в двоичный формат. Следовательно, компилятору необходим список сборок, на которые имеются ссылки и которые содержат типы, используемые файлами Язык XAML. Однако, если файл Язык XAML использует тип, заданный в том же проекте, соответствующая сборка для этого проекта не создается до построения проекта. Таким образом, ссылку на сборку нельзя предоставить во время первого прохода компиляции разметки.
Вместо этого задача MarkupCompilePass1 откладывает преобразование файлов Язык XAML, содержащих ссылки на типы того же проекта, до второго прохода компиляции разметки, который выполняется задачей Задача MarkupCompilePass2. Перед выполнением задачи MarkupCompilePass2 создается временная сборка. Эта сборка содержит типы, которые используются файлами Язык XAML, для которых был отложен проход компиляции разметки. Ссылка на созданную сборку передается задаче MarkupCompilePass2, когда она выполняется, позволяя файлам Язык XAML, компиляция которых была отложена, быть скомпилированными в двоичный формат.
Пример
В следующем примере создается временная сборка, так как Page1.xaml содержит ссылку на тип, заданный в том же проекте.
<Project xmlns="https://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>
См. также
Основные понятия
Общие сведения о приложениях браузера WPF XAML
Другие ресурсы
Справочные сведения о WPF для MSBuild