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 References zadá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#.