Задача MarkupCompilePass1
Задача MarkupCompilePass1 преобразует нелокализуемые файлы проекта XAML в скомпилированный двоичный формат.
Параметры задачи
Параметр | Описание |
---|---|
AllGeneratedFiles |
Необязательный параметр вывода ITaskItem[]. Содержит полный список файлов, созданных задачей MarkupCompilePass1. |
AlwaysCompileMarkupFilesInSeparateDomain |
Необязательный параметр Boolean . Указывает, следует ли запускать задачу в отдельном AppDomain. Если этот параметр возвращает false, задача выполняется в том же AppDomain, что и MSBuild. Это позволяет выполнить задачу быстрее. Если этот параметр возвращает значение true, то задача выполняется во втором AppDomain, который изолирован от MSBuild и работает медленнее. |
ApplicationMarkup |
Необязательный параметр ITaskItem[]. Задает имя файла определения приложения XAML. |
AssembliesGeneratedDuringBuild |
Необязательный параметр типа String[]. Задает ссылки на сборки, которые изменяются в процессе сборки. Например, решение Visual Studio может содержать один проект, который ссылается на выходные данные компиляции другого проекта. В этом случае выходные данные компиляции второго проекта можно добавить в параметр AssembliesGeneratedDuringBuild. Примечание. Параметр AssembliesGeneratedDuringBuild должен содержать ссылки на полный набор сборок, созданных решением сборки. |
AssemblyName |
Обязательный параметр string. Задает короткое имя сборки, которая создается для проекта. Например, если проект создает исполняемый файл Windows с именем WinExeAssembly.exe, то параметр AssemblyName имеет значение WinExeAssembly. |
AssemblyPublicKeyToken |
Необязательный параметр String . Задает маркер открытого ключа для сборки. |
AssemblyVersion |
Необязательный параметр String . Задает номер версии сборки. |
ContentFiles |
Необязательный параметр ITaskItem[]. Задает список независимых файлов содержимого. |
DefineConstants |
Необязательный параметр String . Указывает, что текущее значение DefineConstants сохраняется, что влияет на создание конечной сборки. Изменение этого параметра может повлечь изменение общего API в конечной сборке и отразиться на компиляции файлов XAML, ссылающихся на локальные типы. |
ExtraBuildControlFiles |
Необязательный параметр ITaskItem[]. Задает список файлов, определяющих, выполняется ли перестройка при повторном запуске задачи MarkupCompilePass1. Перестройка активируется при изменении одного из этих файлов. |
GeneratedBamlFiles |
Необязательный параметр вывода ITaskItem[]. Содержит список созданных файлов в двоичном формате XAML. |
GeneratedCodeFiles |
Необязательный параметр вывода ITaskItem[]. Содержит список созданных файлов управляемого кода. |
GeneratedLocalizationFiles |
Необязательный параметр вывода ITaskItem[]. Содержит список файлов локализации, созданных для каждого локализуемого файла XAML. |
HostInBrowser |
Необязательный параметр String . Определяет, является ли созданная сборка XBAP. Допустимые значения: true и false. Если присвоено значениеtrue, создается код поддержки размещения в браузере. |
KnownReferencePaths |
Необязательный параметр типа String[]. Задает ссылки на сборки, которые не изменяются в процессе сборки. Сюда включаются сборки, расположенные в глобальном кэше сборок, в каталоге установки .NET и т. д. |
Language |
Обязательный параметр string. Задает управляемый язык, который поддерживает компилятор. Допустимые значения: C#, VB, JScript и C++. |
LanguageSourceExtension |
Необязательный параметр String . Задает расширение, которое добавляется к расширению созданного файла управляемого кода: <Filename>.g<LanguageSourceExtension> Если для параметра LanguageSourceExtension не задано какое-либо определенное значение, используется стандартное расширение исходного файла для языка: .vb для Visual Basic, .csharp для C#. |
LocalizationDirectivesToLocFile |
Необязательный параметр String . Указывает, как создать сведения о локализации для каждого исходного файла XAML. Допустимые значения: None, CommentsOnly и All. |
OutputPath |
Обязательный параметр string. Указывает каталог, в котором создаются файлы управляемого кода и двоичные файлы XAML. |
OutputType |
Обязательный параметр string. Задает тип сборки, которая создается проектом. Допустимые значения: winexe, exe, library и netmodule. |
PageMarkup |
Необязательный параметр ITaskItem[]. Задает список обрабатываемых файлов XAML. |
References |
Необязательный параметр ITaskItem[]. Указывает список содержащихся в файлах ссылок на сборки, которые содержат типы, используемые в файлах XAML. |
RequirePass2ForMainAssembly |
Необязательный параметр вывода типа Boolean. Указывает, содержит ли проект нелокализуемые файлы XAML со ссылками на локальные типы, внедренные в основную сборку. |
RequirePass2ForSatelliteAssembly |
Необязательный параметр вывода типа Boolean. Указывает, содержит ли проект локализуемые файлы XAML со ссылками на локальные типы, внедренные в основную сборку. |
RootNamespace |
Необязательный параметр String . Задает корневое пространство имен для классов, которые находятся внутри проекта. RootNamespace также используется как пространство имен по умолчанию для созданного файла управляемого кода, если соответствующий файл XAML не содержит атрибут x:Class . |
SourceCodeFiles |
Необязательный параметр ITaskItem[]. Задает список файлов кода для текущего проекта. В этот список не входят файлы управляемого кода, созданные для определенного языка. |
UICulture |
Необязательный параметр String . Задает вспомогательную сборку для языка и региональных параметров пользовательского интерфейса, в которую внедряются созданные двоичные файлы XAML. Если значение для UICulture не задано, созданные двоичные файлы XAML внедряются в основную сборку. |
XAMLDebuggingInformation |
Необязательный параметр Boolean . Если он имеет значение true, для помощи в отладке создается диагностическая информация, которая помещается в скомпилированный элемент XAML. |
Замечания
Задача MarkupCompilePass1 обычно компилирует XAML в двоичный формат и создает файлы кода. Если файл XAML содержит ссылки на типы, заданные в том же самом проекте, его компиляция в двоичный формат откладывается MarkupCompilePass1 до второго этапа компиляции разметки (MarkupCompilePass2). Компиляция таких файлов должна быть отложена, так как им необходимо дождаться компиляции локально определенных типов, на которые имеются ссылки. Однако, если в файле XAML есть атрибут x:Class
, MarkupCompilePass1 создает для него языковую версию файла кода.
Файл XAML можно локализовать, если в нем содержатся элементы, использующие атрибут x:Uid
:
<Page x:Class="WPFMSBuildSample.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Uid="Page1Uid"
>
...
</Page>
Файл XAML ссылается на локально определенный тип, когда в нем объявляется пространство имен XML, использующее значение clr-namespace
для ссылки на пространство имен в текущем проекте:
<Page x:Class="WPFMSBuildSample.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localNamespace="clr-namespace:WPFMSBuildSample"
>
<Grid>
<Grid.Resources>
<localNameSpace:LocalType x:Key="localType" />
</Grid.Resources>
...
</Grid>
</Page>
Если какой-либо файл XAML можно локализовать или он содержит ссылки на локально определенный тип, необходим второй этап компиляции разметки. Для этого требуется выполнить GenerateTemporaryTargetAssembly, а затем — MarkupCompilePass2.
Пример
В следующем примере показано, как преобразовать три файла Page XAML в файлы двоичного формата. Page1 содержит ссылку на тип Class1
, который находится в корневом пространстве имен проекта и не преобразуется в файлы двоичного формата на данном этапе компиляции разметки. Вместо этого выполняется GenerateTemporaryTargetAssembly, а затем — MarkupCompilePass2.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask
TaskName="Microsoft.Build.Tasks.Windows.MarkupCompilePass1"
AssemblyFile="C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationBuildTasks.dll" />
<Target Name="MarkupCompilePass1Task">
<MarkupCompilePass1
AssemblyName="WPFMSBuildSample"
Language="C#"
OutputType="WinExe"
OutputPath="obj\Debug\"
ApplicationMarkup="App.xaml"
PageMarkup="Page1.xaml;Page2.xaml;Page3.xaml"
SourceCodeFiles="Class1.cs"
References="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>