GenerateResource – úloha
Převádí soubory .txt
a .resx
(formát prostředků založený na JAZYCE XML) a binární .resources
soubory modulu CLR (Common Language Runtime), které lze vložit do binárního spustitelného souboru modulu runtime nebo zkompilovat do satelitních sestavení. Tato úloha se obvykle používá k převodu .txt
souborů nebo .resx
k souborům .resources
. Úloha GenerateResource
je funkčně podobná resgen.exe.
Upozornění
Prostředky v .resx
souborech mohou být serializovány pomocí BinaryFormatter
, což není bezpečné. Zahrnout pouze tyto .resx
soubory do procesu sestavení, kterému důvěřujete.
Parametry
Následující tabulka popisuje parametry GenerateResource
úlohy.
Parametr | Popis |
---|---|
AdditionalInputs |
Volitelný ITaskItem[] parametr.Obsahuje další vstupy pro kontrolu závislostí provedenou touto úlohou. Například soubory projektu a cíle by obvykle měly být vstupy, takže pokud jsou aktualizovány, všechny zdroje se znovu vygenerují. |
EnvironmentVariables |
Volitelný String[] parametr.Určuje pole párů název-hodnota proměnných prostředí, které by se měly předat do vytvářeného resgen.exe kromě (nebo selektivního přepsání) běžného bloku prostředí. |
ExcludedInputPaths |
Volitelný ITaskItem[] parametr.Určuje pole položek, které určují cesty, ze kterých budou sledované vstupy ignorovány během kontroly aktuálního stavu. |
ExecuteAsTool |
Volitelný Boolean parametr.Pokud true se spustí tlbimp.exe a aximp.exe z příslušné cílové architektury, aby se vygenerovala potřebná sestavení obálky. Tento parametr umožňuje cílení na více .ResolveComReferences |
FilesWritten |
Volitelný ITaskItem[] výstupní parametr.Obsahuje názvy všech souborů zapsaných na disk. To zahrnuje soubor mezipaměti( pokud existuje). Tento parametr je užitečný pro implementace Clean. |
MinimalRebuildFromTracking |
Volitelný Boolean parametr.Získá nebo nastaví přepínač, který určuje, zda bude použito sledované přírůstkové sestavení. Pokud true je zapnuté přírůstkové sestavení, jinak se vynutí opětovné sestavení. |
NeverLockTypeAssemblies |
Volitelný Boolean parametr.Získá nebo nastaví logickou hodnotu, která určuje, zda vytvořit novou AppDomain pro vyhodnocení prostředků (.resx) souborů (true) nebo vytvoření nové AppDomain pouze v případech, kdy soubory prostředků odkazují na sestavení uživatele (false). |
OutputResources |
Volitelný ITaskItem[] výstupní parametr.Určuje název vygenerovaných souborů, například .resources souborů. Pokud nezadáte název, použije se název odpovídajícího vstupního souboru a .resources vytvořený soubor se umístí do adresáře, který obsahuje vstupní soubor. |
PublicClass |
Volitelný Boolean parametr.Pokud true vytvoří třídu prostředků silného typu jako veřejnou třídu. |
References |
Volitelný String[] parametr.Odkazy na načtení typů v .resx souborech z. .resx datové prvky souboru mohou mít typ .NET. Při čtení souboru .resx je nutné tento typ vyřešit. Obvykle se úspěšně vyřeší pomocí standardních pravidel načítání typu. Pokud zadáte sestavení, References budou mít přednost.Tento parametr není vyžadován pro prostředky se silnými typy. |
SdkToolsPath |
Volitelný String parametr.Určuje cestu k nástrojům sady SDK, například resgen.exe. |
Sources |
Požadovaný parametr ITaskItem[] .Určuje položky, které se mají převést. Položky předané tomuto parametru musí mít jednu z následujících přípon souborů: - .txt : Určuje příponu textového souboru, který se má převést. Textové soubory můžou obsahovat pouze řetězcové prostředky.- .resx: Určuje příponu pro soubor prostředků založený na jazyce XML, který se má převést. - .restext: Určuje stejný formát jako .txt. Toto jiné rozšíření je užitečné, pokud chcete jasně odlišit zdrojové soubory, které obsahují prostředky z jiných zdrojových souborů v procesu sestavení. - .resources: Určuje příponu souboru prostředků, který se má převést. |
StateFile |
Volitelný ITaskItem parametr. Určuje cestu k volitelnému souboru mezipaměti, který se používá k urychlení kontroly závislostí odkazů ve vstupních souborech .resx . |
StronglyTypedClassName |
Volitelný String parametr.Určuje název třídy pro třídu prostředků silného typu. Pokud tento parametr není zadaný, použije se základní název souboru prostředků. |
StronglyTypedFilename |
Volitelný ITaskItem parametr. Určuje název souboru zdrojového souboru. Pokud tento parametr není zadán, název třídy se použije jako základní název souboru s rozšířením závislým na jazyce. Příklad: MyClass.cs. |
StronglyTypedLanguage |
Volitelný String parametr.Určuje jazyk, který se má použít při generování zdroje třídy pro prostředek silného typu. Tento parametr musí odpovídat přesně jednomu z jazyků používaných CodeDomProvider. Například: VB nebo C# .Předáním hodnoty tomuto parametru dáváte úkolu pokyn, aby vygeneroval prostředky silného typu. |
StronglyTypedManifestPrefix |
Volitelný String parametr.Určuje obor názvů prostředků nebo předponu manifestu, která se má použít ve vygenerovaném zdroji třídy pro prostředek silného typu. |
StronglyTypedNamespace |
Volitelný String parametr.Určuje obor názvů, který se má použít pro vygenerovaný zdroj třídy pro prostředek silného typu. Pokud tento parametr není zadaný, všechny prostředky silného typu jsou v globálním oboru názvů. |
TLogReadFiles |
Volitelný ITaskItem[] parametr jen pro čtení.Získá pole položek, které představují protokoly sledování čtení. |
TLogWriteFiles |
Volitelný ITaskItem[] parametr jen pro čtení.Získá pole položek, které představují protokoly sledování zápisu. |
ToolArchitecture |
Volitelný System.String parametr. Používá se k určení, jestli Tracker.exe je potřeba použít k vytvoření ResGen.exe. Měl by být parsovatelný pro člena výčtu ExecutableType . Pokud String.Empty k určení výchozí architektury použije heuristika. Měl by být parsovatelný pro člena výčtu Microsoft.Build.Utilities.ExecutableType. |
TrackerFrameworkPath |
Volitelný String parametr.Určuje cestu k příslušnému umístění rozhraní .NET Framework, které obsahuje FileTracker.dll. V případě nastavení přebírá uživatel odpovědnost za zajištění, že bitová verze FileTracker.dll, kterou předává, odpovídá bitové verzi ResGen.exe, kterou má v úmyslu použít. Pokud není nastavená, úloha rozhoduje o vhodném umístění na základě aktuální verze rozhraní .NET Framework. |
TrackerLogDirectory |
Volitelný String parametr.Určuje zprostředkující adresář, do kterého se umístí protokoly sledování spuštěné z tohoto úkolu. |
TrackerSdkPath |
Volitelný String parametr.Určuje cestu k příslušnému umístění sady Windows SDK, které obsahuje Tracker.exe. V případě nastavení přebírá uživatel odpovědnost za zajištění, že bitová verze Tracker.exe, kterou předává, odpovídá bitové vlastnosti ResGen.exe, kterou má v úmyslu použít. Pokud není nastavená, úloha rozhoduje o příslušném umístění na základě aktuální sady Windows SDK. |
TrackFileAccess |
Volitelný Boolean parametr. Pokud je hodnota true, použije se adresář vstupního souboru k překladu relativních cest k souborům. |
UsePreserializedResources |
Volitelný Boolean parametr.Pokud true určuje, že prostředky bez řetězce mají být serializovány namísto PreserializedResourceWriter ResourceWriter, které nejsou podporovány v .NET Core nebo .NET 5 nebo novější. |
UseSourcePath |
Volitelný Boolean parametr.Pokud true určuje, že se má adresář vstupního souboru použít k překladu relativních cest k souborům. |
Poznámky
Vzhledem k tomu, že .resx
soubory můžou obsahovat odkazy na jiné soubory prostředků, nestačí jednoduše porovnat .resx
časové razítka a .resources
zjistit, jestli jsou výstupy aktuální. Místo toho se GenerateResource
úkol řídí odkazy v .resx
souborech a kontroluje také časová razítka propojených souborů. To znamená, že byste neměli obecně používat Inputs
a Outputs
atributy v cíli obsahujícím GenerateResource
úlohu, protože to může způsobit, že se přeskočí, když se má skutečně spustit.
Kromě výše uvedených parametrů tato úloha dědí parametry z TaskExtension třídy, která sama dědí z Task třídy. Seznam těchto dalších parametrů a jejich popisů naleznete v tématu TaskExtension základní třída.
Při použití nástroje MSBuild 4.0 k cílení projektů .NET 3.5 může sestavení selhat u prostředků x86. Chcete-li tento problém vyřešit, můžete vytvořit cíl jako sestavení AnyCPU.
Parametr UsePreserializedResources
získá hodnotu z vlastnosti $(GenerateResourceUsePreserializedResources)
v normálním procesu sestavení .NET. Tato vlastnost je ve výchozím nastavení nastavena true
v projektech a projektech .NET Core, které používají .NET 5 nebo novější. Můžete nastavit $(GenerateResourceUsePreserializedResources)
tak, aby true
sada .NET SDK umožňovala sestavování projektů, které cílí na rozhraní .NET Framework 4.6.1 nebo novější, které používají jiné než řetězcové prostředky. System.Resources.Extensions
Sestavení musí být dostupné za běhu. Je k dispozici v .NET Core 3.0 a novějších a .NET 5 a novějších a lze ji použít v rozhraní .NET Framework 4.6.1 nebo novějším prostřednictvím PackageReference.|
Příklad
Následující příklad používá GenerateResource
úlohu k vygenerování .resources
souborů ze souborů určených kolekcí Resx
položek.
<GenerateResource
Sources="@(Resx)"
OutputResources="@(Resx->'$(IntermediateOutputPath)%(Identity).resources')">
<Output
TaskParameter="OutputResources"
ItemName="Resources"/>
</GenerateResource>
Úloha GenerateResource
používá <LogicalName>
metadata <EmbeddedResource>
položky k pojmenování prostředku, který je vložen do sestavení.
Za předpokladu, že sestavení má název myAssembly, následující kód vygeneruje vložený prostředek s názvem someQualifier.someResource.resources
:
<ItemGroup>
<EmbeddedResource Include="myResource.resx">
<LogicalName>someQualifier.someResource.resources</LogicalName>
</EmbeddedResource>
</ItemGroup>
<LogicalName>
Bez metadat by se prostředek pojmenoval myAssembly.myResource.resources
. Tento příklad platí pouze pro proces sestavení jazyka Visual Basic a Visual C#.