Sdílet prostřednictvím


GenerateResource – úloha

Převádí mezi soubory .txt a .resx (formát prostředků založený na JAZYCE XML) a binárními .resources soubory 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 nebo .resx souborů na soubory .resources. Úloha GenerateResource je funkčně podobná resgen.exe.

Opatrnost

Prostředky v .resx soubory mohou být serializovány pomocí BinaryFormatter, což je není zabezpečené. Do procesu sestavení, kterému důvěřujete, zahrňte jenom ty .resx soubory.

Parametry

Následující tabulka popisuje parametry GenerateResource úlohy.

Parametr Popis
AdditionalInputs Volitelný parametr ITaskItem[].

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ý parametr String[].

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í přepsání) běžného bloku prostředí.
ExcludedInputPaths Volitelný parametr ITaskItem[].

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ý parametr Boolean.

Pokud true, 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, včetně souboru mezipaměti, pokud existuje. Tento parametr je užitečný pro implementace Clean.
MinimalRebuildFromTracking Volitelný parametr Boolean.

Získá nebo nastaví přepínač, který určuje, zda bude použito sledované přírůstkové sestavení. Pokud true, je přírůstkové sestavení zapnuté; jinak bude opětovné sestavení vynuceno.
NeverLockTypeAssemblies Volitelný parametr Boolean.

Získá nebo nastaví logickou hodnotu, která určuje, zda vytvořit novou AppDomain vyhodnotit prostředky (.resx) soubory (true) nebo vytvořit 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 vytvořený .resources soubor se umístí do adresáře, který obsahuje vstupní soubor.
PublicClass Volitelný parametr Boolean.

Pokud true, vytvoří třídu prostředků silného typu jako veřejnou třídu.
References Volitelný parametr String[].

Odkazy na typy načítání v .resx souborech z. .resx datových prvků souboru mohou mít typ .NET. Při čtení souboru .resx musí být tento typ vyřešen. Obvykle se úspěšně vyřeší pomocí standardních pravidel načítání typu. Pokud v Referenceszadáte sestavení, budou mít přednost.

Tento parametr není nutný pro prostředky silného typu.
SdkToolsPath Volitelný parametr String.

Určuje cestu k nástrojům sady SDK, například resgen.exe.
Sources Povinný ITaskItem[] parametr.

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ředku, který se má převést.
StateFile Volitelný parametr ITaskItem.

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ý parametr String.

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ý parametr ITaskItem.

Určuje název souboru zdrojového souboru. Pokud tento parametr není zadaný, název třídy se použije jako základní název souboru s příponou závislou na jazyce. Příklad: MyClass.cs.
StronglyTypedLanguage Volitelný parametr String.

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ý parametr String.

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ý parametr String.

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ý parametr System.String.

Používá se k určení, zda Tracker.exe je třeba použít k vytvoření ResGen.exe.

Měl by být parsovatelný pro člena ExecutableType výčtu. Pokud String.Empty, použije heuristické k určení výchozí architektury. Měl by být parsovatelný pro člena Microsoft.Build.Utilities.ExecutableType výčtu.
TrackerFrameworkPath Volitelný parametr String.

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ý parametr String.

Určuje zprostředkující adresář, do kterého se umístí protokoly sledování spuštěné z tohoto úkolu.
TrackerSdkPath Volitelný parametr String.

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é verzi 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ý parametr Boolean.

Pokud je hodnota true, použije se adresář vstupního souboru k překladu relativních cest k souborům.
UsePreserializedResources Volitelný parametr Boolean.

Pokud true, určuje, že prostředky bez řetězce mají být serializovány pomocí PreserializedResourceWriter místo ResourceWriter, což není podporováno v .NET Core nebo .NET 5 nebo novější.
UseSourcePath Volitelný parametr Boolean.

Pokud true, určuje, že se má adresář vstupního souboru použít k překladu relativních cest k souborům.

Poznámky

Protože .resx soubory můžou obsahovat odkazy na jiné soubory prostředků, nestačí jednoduše porovnat .resx a .resources časových razítek souborů, abyste zjistili, jestli jsou výstupy aktuální. Místo toho GenerateResource úloha sleduje 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 úlohu GenerateResource, protože to může způsobit, že se při skutečném spuštění přeskočí.

Kromě výše uvedených parametrů dědí tato úloha parametry z třídy TaskExtension, která sama dědí z třídy Task. Seznam těchto dalších parametrů a jejich popisů naleznete v tématu TaskExtension základní třídy.

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á jeho hodnotu z vlastnosti $(GenerateResourceUsePreserializedResources) v normálním procesu sestavení .NET. Tato vlastnost je ve výchozím nastavení nastavena na true v projektech a projektech .NET Core, které používají .NET 5 nebo novější. Můžete nastavit $(GenerateResourceUsePreserializedResources) tak, aby true, aby sada .NET SDK mohla vytvářet projekty, které cílí na rozhraní .NET Framework 4.6.1 nebo novější, které používají jiné než řetězcové prostředky. Sestavení System.Resources.Extensions 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á úlohu GenerateResource ke generování .resources souborů ze souborů určených kolekcí položek Resx.

<GenerateResource
    Sources="@(Resx)"
    OutputResources="@(Resx->'$(IntermediateOutputPath)%(Identity).resources')">
    <Output
        TaskParameter="OutputResources"
        ItemName="Resources"/>
</GenerateResource>

Úloha GenerateResource používá metadata <LogicalName> položky <EmbeddedResource> 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>
        <WithCulture>false</WithCulture>
    </EmbeddedResource>
</ItemGroup>

Bez metadat <LogicalName> by se prostředek pojmenoval myAssembly.myResource.resources. Tento příklad platí pouze pro proces sestavení jazyka Visual Basic a Visual C#.

Viz také