Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Преобразует файлы между файлами .txt
и .resx
(форматом ресурсов на основе XML) и двоичными файлами среды cl language runtime .resources
, которые могут быть внедрены в двоичный исполняемый файл среды выполнения или компилируются в вспомогательные сборки. Эта задача обычно используется для преобразования .txt
или .resx
файлов в файлы .resources
. Задача GenerateResource
функционально похожа на resgen.exe.
Осторожность
Ресурсы в файлах .resx
могут быть сериализованы с помощью BinaryFormatter
, что незащищено. Включите только те .resx
файлы в процесс сборки, которым вы доверяете.
Параметры
В следующей таблице описаны параметры задачи GenerateResource
.
Параметр | Описание |
---|---|
AdditionalInputs |
Необязательный параметр ITaskItem[] .Содержит дополнительные входные данные для проверки зависимостей, выполняемой этой задачей. Например, файлы проекта и целевых объектов обычно должны быть входными данными, чтобы при их обновлении все ресурсы были повторно созданы. |
EnvironmentVariables |
Необязательный параметр String[] .Задает массив пар "имя-значение" переменных среды, которые должны передаваться в разреженные resgen.exe, помимо (или выборочно переопределения) регулярного блока среды. |
ExcludedInputPaths |
Необязательный параметр ITaskItem[] .Задает массив элементов, указывающих пути, из которых отслеживаемые входные данные будут игнорироваться во время актуальной проверки. |
ExecuteAsTool |
Необязательный параметр Boolean .Если true , выполняется tlbimp.exe и aximp.exe из соответствующей целевой платформы вне proc, чтобы создать необходимые сборки-оболочки. Этот параметр позволяет использовать многоцелевой ResolveComReferences . |
FilesWritten |
Необязательный параметр вывода ITaskItem[] .Содержит имена всех файлов, записанных на диск, включая файл кэша, если таковой есть. Этот параметр полезен для реализации Clean. |
MinimalRebuildFromTracking |
Необязательный параметр Boolean .Возвращает или задает коммутатор, указывающий, будет ли использоваться отслеживаемая добавочная сборка. Если true , добавочная сборка включена; в противном случае перестроение будет принудительно. |
NeverLockTypeAssemblies |
Необязательный параметр Boolean .Возвращает или задает логическое значение, указывающее, следует ли создать новый appDomain для оценки файлов ресурсов ( .resx ) или создания нового AppDomain, только если файлы ресурсов ссылаются на сборку пользователя (false). |
OutputResources |
Необязательный параметр вывода ITaskItem[] .Указывает имя созданных файлов, таких как .resources файлы. Если имя не указано, используется имя соответствующего входного файла, а созданный файл .resources помещается в каталог, содержащий входной файл. |
PublicClass |
Необязательный параметр Boolean .Если true , создает строго типизированный класс ресурсов в качестве общедоступного класса. |
References |
Необязательный параметр String[] .Ссылки на типы загрузки в .resx файлах из.
.resx элементы данных файла могут иметь тип .NET. При чтении RESX-файла этот тип должен быть разрешен. Как правило, он разрешается успешно с помощью стандартных правил загрузки типов. Если вы предоставляете сборки в References , они имеют приоритет.Этот параметр не требуется для строго типизированных ресурсов. |
SdkToolsPath |
Необязательный параметр String .Указывает путь к средствам SDK, таким как resgen.exe. |
Sources |
Обязательный параметр ITaskItem[] .Указывает элементы для преобразования. Элементы, передаваемые этому параметру, должны иметь одно из следующих расширений файлов: - .txt . Указывает расширение для преобразования текстового файла. Текстовые файлы могут содержать только строковые ресурсы.- .resx . Указывает расширение для преобразованного файла ресурсов на основе XML.- .restext : указывает тот же формат, что и .txt . Это другое расширение полезно, если вы хотите четко отличить исходные файлы, содержащие ресурсы от других исходных файлов в процессе сборки.- .resources . Указывает расширение для преобразования файла ресурсов. |
StateFile |
Необязательный параметр ITaskItem. Указывает путь к необязательному файлу кэша, который используется для ускорения проверки зависимостей ссылок в .resx входных файлах. |
StronglyTypedClassName |
Необязательный параметр String .Задает имя класса для строго типизированного класса ресурсов. Если этот параметр не указан, используется базовое имя файла ресурса. |
StronglyTypedFilename |
Необязательный параметр ITaskItem. Указывает имя файла для исходного файла. Если этот параметр не указан, имя класса используется в качестве базового имени файла, при этом расширение зависит от языка. Например, MyClass.cs. |
StronglyTypedLanguage |
Необязательный параметр String .Указывает язык, используемый при создании источника класса для строго типизированного ресурса. Этот параметр должен соответствовать точно одному из языков, используемых CodeDomProvider. Например, VB или C# .Передав значение этому параметру, вы указываете задаче создавать строго типизированные ресурсы. |
StronglyTypedManifestPrefix |
Необязательный параметр String .Указывает пространство имен ресурса или префикс манифеста, используемый в созданном источнике класса для строго типизированного ресурса. |
StronglyTypedNamespace |
Необязательный параметр String .Указывает пространство имен, используемое для созданного источника класса для строго типизированного ресурса. Если этот параметр не указан, все строго типизированные ресурсы находятся в глобальном пространстве имен. |
TLogReadFiles |
Необязательный параметр ITaskItem[] только для чтения.Возвращает массив элементов, представляющих журналы отслеживания чтения. |
TLogWriteFiles |
Необязательный параметр ITaskItem[] только для чтения.Возвращает массив элементов, представляющих журналы отслеживания записи. |
ToolArchitecture |
Необязательный параметр System.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 .Указывает путь к соответствующему расположению пакета SDK для Windows, который содержит Tracker.exe. Если задано, пользователь несет ответственность за то, что биты Tracker.exe, которые они передают, соответствуют биту ResGen.exe, которую они намерены использовать. Если этот параметр не задан, задача решает соответствующее расположение на основе текущего пакета SDK для Windows. |
TrackFileAccess |
Необязательный параметр Boolean. Если значение true, каталог входного файла используется для разрешения относительных путей к файлам. |
UsePreserializedResources |
Необязательный параметр Boolean .Если true , указывает, что нестроковые ресурсы должны быть сериализованы с помощью PreserializedResourceWriter вместо ResourceWriter, который не поддерживается в .NET Core или .NET 5 или более поздней версии. |
UseSourcePath |
Необязательный параметр Boolean .Если true , указывает, что каталог входного файла должен использоваться для разрешения относительных путей к файлам. |
Замечания
Так как .resx
файлы могут содержать ссылки на другие файлы ресурсов, недостаточно просто сравнить .resx
и .resources
метки времени файлов, чтобы узнать, актуальны ли выходные данные. Вместо этого задача GenerateResource
следует ссылкам в файлах .resx
и проверяет метки времени связанных файлов. Это означает, что обычно не следует использовать Inputs
и Outputs
атрибуты в целевом объекте, содержащее задачу GenerateResource
, так как это может привести к пропуску при фактическом запуске.
Помимо параметров, перечисленных выше, эта задача наследует параметры из класса TaskExtension, который сам наследует от класса Task. Список этих дополнительных параметров и их описания см. в разделе базовый класс TaskExtension.
При использовании MSBuild 4.0 для целевых проектов .NET 3.5 сборка может завершиться ошибкой ресурсов x86. Чтобы обойти эту проблему, можно создать целевой объект как сборку AnyCPU.
Параметр UsePreserializedResources
получает значение из свойства $(GenerateResourceUsePreserializedResources)
в обычном процессе сборки .NET. Это свойство по умолчанию true
в проектах и проектах .NET Core, использующих .NET 5 или более поздней версии. Можно задать для $(GenerateResourceUsePreserializedResources)
значение true
, чтобы пакет SDK для .NET могли создавать проекты, предназначенные для .NET Framework 4.6.1 или более поздней версии, которые используют нестроковые ресурсы. Сборка System.Resources.Extensions
должна быть доступна во время выполнения. Он доступен в .NET Core 3.0 и более поздних версий, а также в .NET 5 и более поздних версиях и может использоваться в .NET Framework 4.6.1 или более поздней версии с помощью PackageReference.|
Пример
В следующем примере задача 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>
<WithCulture>false</WithCulture>
</EmbeddedResource>
</ItemGroup>
Без метаданных <LogicalName>
ресурс будет называться myAssembly.myResource.resources
. Этот пример применяется только к процессу сборки Visual Basic и Visual C#.
См. также
- задачи
- Справочник по задачам