MarkupCompilePass2 - задача

Задача MarkupCompilePass2 выполняет второй проход компиляции разметки на файлах XAML, которые ссылаются на типы в том же проекте.

Параметры задачи

Параметр Описание
AlwaysCompileMarkupFilesInSeparateDomain Необязательный параметр Boolean .

Указывает, следует ли запускать задачу в отдельном AppDomain. Если этот параметр возвращает false, задача выполняется в том же AppDomain, что и MSBuild. Это позволяет выполнить задачу быстрее. Если этот параметр возвращает значение true, то задача выполняется во втором AppDomain, который изолирован от MSBuild и работает медленнее.
AssembliesGeneratedDuringBuild Необязательный параметр типа String[].

Задает ссылки на сборки, которые изменяются в процессе сборки. Например, решение Visual Studio может содержать один проект, который ссылается на выходные данные компиляции другого проекта. В этом случае выходные данные компиляции второго проекта можно добавить в AssembliesGeneratedDuringBuild.

Примечание. Элемент AssembliesGeneratedDuringBuild должен содержать ссылки на полный набор сборок, созданных решением сборки.
AssemblyName Обязательный параметр string.

Задает короткое имя сборки, которая создается для проекта. Например, если проект создает исполняемый файл с именем WinExeAssembly.exe, то параметр AssemblyName имеет значение WinExeAssembly.
GeneratedBaml Необязательный параметр вывода ITaskItem[].

Содержит список созданных файлов в двоичном формате XAML.
KnownReferencePaths Необязательный параметр типа String[].

Задает ссылки на сборки, которые не изменяются в процессе сборки. Сюда включаются сборки, расположенные в глобальном кэше сборок, в каталоге установки .NET и т. д.
Language Обязательный параметр string.

Задает управляемый язык, который поддерживает компилятор. Допустимые значения: C#, VB, JScript и C++.
LocalizationDirectivesToLocFile Необязательный параметр String .

Указывает, как создать сведения о локализации для каждого исходного файла XAML. Допустимые значения: None, CommentsOnly и All.
OutputPath Обязательный параметр string.

Указывает каталог, в котором сохраняются созданные файлы XAML в двоичном формате.
OutputType Обязательный параметр string.

Задает тип сборки, которая создается проектом. Допустимые значения: winexe, exe, library и netmodule.
References Необязательный параметр ITaskItem[].

Указывает список содержащихся в файлах ссылок на сборки, которые содержат типы, используемые в файлах XAML. Одна ссылка указывает на сборку, созданную задачей GenerateTemporaryTargetAssembly, которая должна выполняться перед задачей MarkupCompilePass2.
RootNamespace Необязательный параметр String .

Задает корневое пространство имен для классов, которые находятся внутри проекта. RootNamespace также используется как пространство имен по умолчанию для созданного файла управляемого кода, если соответствующий файл XAML не содержит атрибут x:Class.
XAMLDebuggingInformation Необязательный параметр Boolean .

Если он имеет значение true, для помощи в отладке создается диагностическая информация, которая помещается в скомпилированный элемент XAML.

Замечания

Прежде чем выполнять MarkupCompilePass2, необходимо создать временную сборку, содержащую используемые в файлах XAML типы, так как компиляция разметки для этих файлов откладывается на второй проход. Чтобы создать эту временную сборку, запустите задачу GenerateTemporaryTargetAssembly.

Ссылка на созданную временную сборку передается в задачу MarkupCompilePass2 при ее запуске. Это позволяет скомпилировать в двоичный формат файлы XAML, компиляция которых была отложена при первом проходе компиляции разметки.

Пример

В следующем примере показано, как использовать задачу MarkupCompilePass2 для выполнения второго прохода компиляции.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <UsingTask
    TaskName="Microsoft.Build.Tasks.Windows.MarkupCompilePass2"
    AssemblyFile="C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationBuildTasks.dll" />
  <Target Name="MarkupCompilePass2Task">
    <MarkupCompilePass2
      AssemblyName="WPFMSBuildSample"
      Language="C#"
      OutputType="WinExe"
      OutputPath="obj\Debug\"
      References=".\obj\debug\WPFMSBuildSample.exe;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" />
  </Target>
</Project>

См. также