Задача GenerateResource
Преобразование TXT- и RESX-файлов (файлы ресурсов на основе XML) и двоичные файлы с расширением .resources общеязыковой среды выполнения, которые могут быть внедрены в двоичный исполняемый файл среды выполнения или скомпилированы в сопутствующие сборки.Эта задача обычно используется для преобразования TXT- и RESX-файлов в файлы .resources.Задача GenerateResource функционально аналогична задаче resgen.exe.
Параметры
В следующей таблице описаны параметры задачи GenerateResource.
Параметр |
Описание |
---|---|
AdditionalInputs |
Необязательный параметр ITaskItem[] Содержит дополнительные входные файлы для выполненной задачей проверки зависимостей.Например, для обеспечения повторного создания всех ресурсов в случае обновления файла проекта и целевых файлов эти файлы обычно должны быть входными. |
EnvironmentVariables |
Необязательный параметр типа String[]. Задает массив пар "имя-значение" переменных среды, которые должны быть переданы в созданный файл resgen.exe в дополнение к обычному блоку среды (или частично переопределяя его). |
ExcludedInputPaths |
Необязательный параметр ITaskItem[] Задает массив элементов, задающих пути, из которых отслеживаемые входные данные во время проверки обновлений игнорируются. |
ExecuteAsTool |
Необязательный параметр типа Boolean. Если true, выполняет tlbimp.exe и aximp.exe из соответствующей требуемой версии .NET Framework из внешнего процесса для создания необходимых сборок-оболочек.Этот параметр позволяет настройку для различных версий ResolveComReferences. |
FilesWritten |
Необязательный выходной параметр типа ITaskItem[]. Имена всех файлов, записываемых на диск.В этот набор включен файл кэша, если он имеется.Этот параметр применяется для реализации метода Clean. |
MinimalRebuildFromTracking |
Необязательный параметр типа Boolean. Получает или задает параметр, задающий, будет ли использоваться отслеживаемое инкрементное построение.Если значение true, инкрементное построение включено; в противном случае будет принудительно выполнено перестроение. |
NeverLockTypeAssemblies |
Необязательный параметр типа Boolean. Имена созданных файлов, например файлов .resources.Если имя не указано, то используется имя соответствующего входного файла, а создаваемый файл .resources помещается в каталог, содержащий входной файл. |
OutputResources |
Необязательный выходной параметр типа ITaskItem[]. Имена созданных файлов, например файлов .resources.Если имя не указано, то используется имя соответствующего входного файла, а создаваемый файл .resources помещается в каталог, содержащий входной файл. |
PublicClass |
Необязательный параметр типа Boolean. При значении true создается строго типизированный класс ресурсов — открытый класс. |
References |
Необязательный параметр типа String[]. Ссылки на типы загрузки из файлов .resx.Элементы данных в файле .resx могут иметь тип .NET.При считывании файла .resx это противоречие должно быть разрешено.Обычно это разрешается с помощью стандартных правил загрузки типов.Сборки, указанные в параметре References, имеют приоритет. Этот параметр не требуется для строго типизированных ресурсов. |
SdkToolsPath |
Необязательный параметр типа String. Задает путь к средствам SDK, таким как resgen.exe. |
Sources |
Обязательный параметр ITaskItem[]. Элементы для преобразования.Элементы, передаваемые этому параметру, должны иметь одно из следующих файловых расширений:
|
StateFile |
Необязательный параметр типа ITaskItem. Путь к необязательному файлу кэша, используемому для ускорения проверки зависимости для ссылок во входных файлах .resx. |
StronglyTypedClassName |
Необязательный параметр типа String. Имя класса для строго типизированного класса ресурсов.Если этот параметр не задан, то используется базовое имя файла ресурсов. |
StronglyTypedFilename |
Необязательный параметр типа ITaskItem. Имя для исходного файла.Если этот параметр не задан, то в качестве базового имени файла используется имя класса, расширение которого зависит от языка.Например, MyClass.cs. |
StronglyTypedLanguage |
Необязательный параметр типа String. Язык, применяемый во время создания источника класса для строго типизированного ресурса.Этот параметр должен точно совпадать с одним из языков, применяемых поставщиком CodeDomProvider.Например, VB или C#. Передавая значение этому параметру, вы задаете этой задаче условие создавать строго типизированные ресурсы. |
StronglyTypedManifestPrefix |
Необязательный параметр типа String. Задает Пространство имен ресурсов или префикс манифеста, используемые в источнике создаваемого класса для строго типизированного ресурса. |
StronglyTypedNamespace |
Необязательный параметр типа String. Пространство имен, используемое в создаваемом источнике класса для строго типизированного ресурса.Если этот параметр не задан, то все строго типизированные ресурсы находятся в глобальном пространстве имен. |
TLogReadFiles |
Необязательный параметр ITaskItem[], предназначенный только для чтения. Получает массив элементов, представляющих журналы отслеживания чтения. |
TLogWriteFiles |
Необязательный параметр ITaskItem[], предназначенный только для чтения. Получает массив элементов, представляющих журналы отслеживания записи. |
ToolArchitecture |
Необязательный параметр типа [String]. Используется для определения, необходимо ли использовать Tracker.exe для запуска ResGen.exe. Должно быть распознаваемо в член перечисленияExecutableType.Если String.Empty, использует эвристический алгоритм для определения архитектуры по умолчанию.Должно быть распознаваемо в член перечисления Microsoft.Build.Utilities.ExecutableType. |
TrackerFrameworkPath |
Необязательный параметр типа [String]. Указывает путь к соответствующему местоположению .NET Framework, где содержится FileTracker.dll. Если задано, пользователь отвечает за обеспечение того, что разрядность FileTracker.dll, который передается, совпадала с рязрядностью ResGen.exe, который предполагалось использовать.Если не установлен, задача выбирает соответствующее место на основании текущей версии .NET Framework. |
TrackerLogDirectory |
Необязательный параметр типа [String]. Задает промежуточный каталог, в котором будут размещены журналы отслеживания выполнения этой задачи. |
TrackerSdkPath |
Необязательный параметр типа [String]. Указывает путь к соответствующему местоположению Windows SDK, где содержится Tracker.exe. Если задано, пользователь отвечает за обеспечение того, что разрядность Tracker.exe, который передается, совпадала с рязрядностью ResGen.exe, который предполагалось использовать.Если не установлен, задача выбирает соответствующее место на основании текущей версии Windows SDK. |
TrackFileAccess |
Необязательный параметр типа [Boolean]. Если true, для разрешения конфликтов относительных путей к файлу нужно использовать каталог входного файла. |
UseSourcePath |
Необязательный параметр типа Boolean. При значении true задается условие, по которому каталог входного файла будет использоваться для разрешения конфликтов относительных путей к файлу. |
Заметки
Поскольку в файлах .resx могут содержаться ссылки на другие файлы ресурсов, недостаточно просто сравнить временные штампы файла .resx и .resource, чтобы проверить актуальность выходных данных.Вместо этого задача GenerateResource обращается по ссылкам в файлах .resx и проверяет временные штампы связанных файлов.Это значит, что обычно не следует использовать атрибуты Inputs и Outputs в целевом объекте, содержащем задачу GenerateResource, так как это может вызвать пропуск задачи в момент ее фактического запуска.
Помимо параметров, которые перечислены выше, эта задача наследует параметры от класса TaskExtension, который наследует от класса Task.Чтобы получить список этих доп параметров и их описаний, см. Базовый класс TaskExtension.
При использовании MSBuild 4.0 для проектов .NET 3.5 сборка может дать сбой на ресурсах x86.Для временного решения этой проблемы вы можете построить цель как сборку AnyCPU.
Пример
В следующем примере задача GenerateResource используется для создания файлов .resources из файлов, заданных коллекцией элементов Resx.
<GenerateResource
Sources="@(Resx)"
OutputResources="@(Resx->'$(IntermediateOutputPath)%(Identity).resources')">
<Output
TaskParameter="OutputResources"
ItemName="Resources"/>
</GenerateResource>
Задача GenerateResource использует метаданные <LogicalName> элемента <EmbeddedResource> для именования ресурса, внедренного в сборку.
Предположим, что сборка имеет имя myAssembly; в следующем коде создается внедренный ресурс с именем someQualifier.someResource.resources:
<ItemGroup> <EmbeddedResource Include="myResource.resx"> <LogicalName>someQualifier.someResource.resources</LogicalName> </EmbeddedResource></ItemGroup>
Без метаданных <LogicalName> ресурс будет называться myAssembly.myResource.resources.Этот пример применяется только к процессу построения в Visual Basic и Visual C#.