Delen via


GenerateResource-taak

Converteert tussen bestanden met .txt en .resx (XML-gebaseerde resourceindeling) en binaire .resources-bestanden van common language runtime die kunnen worden ingesloten in een uitvoerbaar runtimebestand of kunnen worden gecompileerd in satellietassembly's. Deze taak wordt meestal gebruikt om .txt of .resx bestanden te converteren naar .resources bestanden. De GenerateResource taak is functioneel vergelijkbaar met resgen.exe.

Voorzichtigheid

Resources in .resx bestanden kunnen worden geserialiseerd met behulp van BinaryFormatter, wat niet veilig is. Neem alleen de .resx bestanden op in het buildproces dat u vertrouwt.

Parameters

In de volgende tabel worden de parameters van de GenerateResource taak beschreven.

Parameter Beschrijving
AdditionalInputs Optionele ITaskItem[] parameter.

Bevat aanvullende invoer voor de afhankelijkheidscontrole die door deze taak wordt uitgevoerd. Het project en de doelbestanden moeten bijvoorbeeld doorgaans invoer zijn, zodat alle resources opnieuw worden gegenereerd als ze worden bijgewerkt.
EnvironmentVariables Optionele String[] parameter.

Hiermee geeft u een matrix van naam-waardeparen van omgevingsvariabelen die moeten worden doorgegeven aan de spawned resgen.exe, naast (of selectief overschrijven) van het reguliere omgevingsblok.
ExcludedInputPaths Optionele ITaskItem[] parameter.

Hiermee geeft u een matrix van items die paden opgeven waaruit bijgehouden invoer wordt genegeerd tijdens de up-to-date controle.
ExecuteAsTool Optionele Boolean parameter.

Als true, wordt tlbimp.exe en aximp.exe uitgevoerd vanuit het juiste doelframework out-of-proc om de benodigde wrapper-assembly's te genereren. Met deze parameter kunnen meerdere ResolveComReferencesworden gebruikt.
FilesWritten Optionele ITaskItem[] uitvoerparameter.

Bevat de namen van alle bestanden die naar de schijf zijn geschreven, inclusief het cachebestand, indien van toepassing. Deze parameter is handig voor implementaties van Clean.
MinimalRebuildFromTracking Optionele Boolean parameter.

Hiermee wordt een switch opgehaald of ingesteld waarmee wordt aangegeven of bijgehouden incrementele build wordt gebruikt. Als true, is incrementele build ingeschakeld; anders wordt een herbouw geforceerd.
NeverLockTypeAssemblies Optionele Boolean parameter.

Hiermee wordt een Booleaanse waarde opgehaald of ingesteld waarmee wordt aangegeven of een nieuwe AppDomain- moet worden gemaakt om de resources (.resx) bestanden (waar) te evalueren of om een nieuwe AppDomain te maken alleen wanneer de resourcesbestanden verwijzen naar de assembly van een gebruiker (onwaar).
OutputResources Optionele ITaskItem[] uitvoerparameter.

Hiermee geeft u de naam van de gegenereerde bestanden, zoals .resources bestanden. Als u geen naam opgeeft, wordt de naam van het overeenkomende invoerbestand gebruikt en wordt het .resources bestand dat is gemaakt in de map met het invoerbestand geplaatst.
PublicClass Optionele Boolean parameter.

Als true, maakt u een sterk getypte resourceklasse als een openbare klasse.
References Optionele String[] parameter.

Verwijzingen naar het laden van typen in .resx bestanden van waaruit. .resx bestandsgegevenselementen kunnen een .NET-type hebben. Wanneer het bestand .resx wordt gelezen, moet dit type worden omgezet. Normaal gesproken wordt dit opgelost met behulp van standaardregels voor het laden van typen. Als u assembly's in Referencesopgeeft, hebben ze voorrang.

Deze parameter is niet vereist voor sterk getypte resources.
SdkToolsPath Optionele String parameter.

Hiermee geeft u het pad naar de SDK-hulpprogramma's op, zoals resgen.exe.
Sources Vereiste ITaskItem[] parameter.

Hiermee geeft u de items die moeten worden geconverteerd. Items die aan deze parameter worden doorgegeven, moeten een van de volgende bestandsextensies hebben:

- .txt: hiermee geeft u de extensie op voor een tekstbestand dat moet worden geconverteerd. Tekstbestanden kunnen alleen tekenreeksbronnen bevatten.
- .resx: hiermee geeft u de extensie op voor een XML-resourcebestand dat moet worden geconverteerd.
- .restext: Hiermee geeft u dezelfde indeling op als .txt. Deze andere extensie is handig als u bronbestanden die resources van andere bronbestanden in uw buildproces bevatten duidelijk wilt onderscheiden.
- .resources: hiermee geeft u de extensie op voor een resourcebestand dat moet worden geconverteerd.
StateFile Optionele ITaskItem parameter.

Hiermee geeft u het pad naar een optioneel cachebestand dat wordt gebruikt om de afhankelijkheidscontrole van koppelingen in .resx invoerbestanden te versnellen.
StronglyTypedClassName Optionele String parameter.

Hiermee geeft u de klassenaam voor de sterk getypte resourceklasse. Als deze parameter niet is opgegeven, wordt de basisnaam van het resourcebestand gebruikt.
StronglyTypedFilename Optionele ITaskItem parameter.

Hiermee geeft u de bestandsnaam voor het bronbestand. Als deze parameter niet is opgegeven, wordt de naam van de klasse gebruikt als de basisbestandsnaam, waarbij de extensie afhankelijk is van de taal. Bijvoorbeeld: MyClass.cs.
StronglyTypedLanguage Optionele String parameter.

Hiermee geeft u de taal op die moet worden gebruikt bij het genereren van de klassebron voor de sterk getypte resource. Deze parameter moet exact overeenkomen met een van de talen die worden gebruikt door de CodeDomProvider. Bijvoorbeeld: VB of C#.

Door een waarde aan deze parameter door te geven, geeft u de taak de opdracht om sterk getypte resources te genereren.
StronglyTypedManifestPrefix Optionele String parameter.

Hiermee geeft u de resourcenaamruimte of het manifestvoorvoegsel op dat moet worden gebruikt in de gegenereerde klassebron voor de sterk getypte resource.
StronglyTypedNamespace Optionele String parameter.

Hiermee geeft u de naamruimte die moet worden gebruikt voor de gegenereerde klassebron voor de sterk getypte resource. Als deze parameter niet is opgegeven, bevinden alle sterk getypte resources zich in de globale naamruimte.
TLogReadFiles Optionele ITaskItem[] alleen-lezen parameter.

Hiermee haalt u een matrix op met items die de logboeken voor het bijhouden van leesbewerkingen vertegenwoordigen.
TLogWriteFiles Optionele ITaskItem[] alleen-lezen parameter.

Hiermee haalt u een matrix op met items die de logboeken voor het bijhouden van schrijfbewerkingen vertegenwoordigen.
ToolArchitecture Optionele System.String parameter.

Wordt gebruikt om te bepalen of Tracker.exe moet worden gebruikt om ResGen.exete spawnen.

Moet parseerbaar zijn voor een lid van de opsomming ExecutableType. Als String.Empty, gebruikt u een heuristiek om een standaardarchitectuur te bepalen. Moet parseerbaar zijn voor een lid van de opsomming Microsoft.Build.Utilities.ExecutableType.
TrackerFrameworkPath Optionele String parameter.

Hiermee geeft u het pad naar de juiste .NET Framework-locatie die FileTracker.dllbevat.

Indien ingesteld, neemt de gebruiker de verantwoordelijkheid om ervoor te zorgen dat de bitheid van de FileTracker.dll die ze doorgeven overeenkomt met de bitness van de ResGen.exe die ze willen gebruiken. Als deze niet is ingesteld, bepaalt de taak de juiste locatie op basis van de huidige versie van .NET Framework.
TrackerLogDirectory Optionele String parameter.

Hiermee geeft u de tussenliggende map waarin de traceringslogboeken van deze taak worden geplaatst.
TrackerSdkPath Optionele String parameter.

Hiermee geeft u het pad naar de juiste Windows SDK-locatie die Tracker.exebevat.

Indien ingesteld, neemt de gebruiker de verantwoordelijkheid om ervoor te zorgen dat de bitheid van de Tracker.exe die ze doorgeven overeenkomt met de bitness van de ResGen.exe die ze willen gebruiken. Als deze niet is ingesteld, bepaalt de taak de juiste locatie op basis van de huidige Windows SDK.
TrackFileAccess Optionele Boolean parameter.

Indien waar, wordt de map van het invoerbestand gebruikt voor het omzetten van relatieve bestandspaden.
UsePreserializedResources Optionele Boolean parameter.

Als true, geeft u aan dat niet-tekenreeksresources moeten worden geserialiseerd met behulp van PreserializedResourceWriter in plaats van ResourceWriter, die niet wordt ondersteund op .NET Core of .NET 5 of hoger.
UseSourcePath Optionele Boolean parameter.

Als true, geeft u aan dat de map van het invoerbestand moet worden gebruikt voor het omzetten van relatieve bestandspaden.

Opmerkingen

Omdat .resx bestanden koppelingen naar andere bronbestanden kunnen bevatten, is het niet voldoende om .resx en .resources bestandstijdstempels te vergelijken om te zien of de uitvoer up-to-date is. In plaats daarvan volgt de GenerateResource taak de koppelingen in de .resx bestanden en controleert ook de tijdstempels van de gekoppelde bestanden. Dit betekent dat u in het algemeen niet Inputs en Outputs kenmerken op het doel met de GenerateResource taak moet gebruiken, omdat dit ertoe kan leiden dat deze wordt overgeslagen wanneer deze daadwerkelijk moet worden uitgevoerd.

Naast de bovenstaande parameters neemt deze taak parameters over van de TaskExtension-klasse, die zelf wordt overgenomen van de Task-klasse. Zie TaskExtension-basisklassevoor een lijst met deze aanvullende parameters en beschrijvingen.

Wanneer u MSBuild 4.0 gebruikt voor .NET 3.5-projecten, kan de build mislukken op x86-resources. U kunt dit probleem omzeilen door het doel te bouwen als een AnyCPU-assembly.

De parameter UsePreserializedResources haalt de waarde op uit de eigenschap $(GenerateResourceUsePreserializedResources) in het normale .NET-buildproces. Deze eigenschap is standaard ingesteld op true in .NET Core-projecten en -projecten die gebruikmaken van .NET 5 of hoger. U kunt $(GenerateResourceUsePreserializedResources) instellen op true om de .NET SDK toe te staan projecten te bouwen die gericht zijn op .NET Framework 4.6.1 of hoger die niet-tekenreeksresources gebruiken. De assembly-System.Resources.Extensions moet tijdens runtime beschikbaar zijn. Het is beschikbaar in .NET Core 3.0 en hoger en .NET 5 en hoger en kan worden gebruikt in .NET Framework 4.6.1 of hoger via PackageReference.|

Voorbeeld

In het volgende voorbeeld wordt de GenerateResource taak gebruikt om .resources bestanden te genereren op basis van de bestanden die zijn opgegeven door de Resx itemverzameling.

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

De GenerateResource taak maakt gebruik van de <LogicalName> metagegevens van een <EmbeddedResource> item om de resource die is ingesloten in een assembly een naam te geven.

Ervan uitgaande dat de assembly myAssembly heet, genereert de volgende code een ingesloten resource met de naam someQualifier.someResource.resources:

<ItemGroup>
    <EmbeddedResource Include="myResource.resx">
        <LogicalName>someQualifier.someResource.resources</LogicalName>
        <WithCulture>false</WithCulture>
    </EmbeddedResource>
</ItemGroup>

Zonder de <LogicalName> metagegevens wordt de resource myAssembly.myResource.resourcesgenoemd. Dit voorbeeld is alleen van toepassing op het buildproces van Visual Basic en Visual C#.

Zie ook