Задача 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#.