Dela via


GenerateResource-uppgift

Konverterar mellan .txt- och .resx-filer (XML-baserat resursformat) och vanliga binära språkkörningsfiler .resources filer som kan bäddas in i en körbar binär körbar fil eller kompileras i satellitsammansättningar. Den här uppgiften används vanligtvis för att konvertera .txt eller .resx filer till .resources filer. Uppgiften GenerateResource fungerar ungefär som resgen.exe.

Försiktighet

Resurser i .resx filer kan serialiseras med BinaryFormatter, vilket inte är säkert. Inkludera endast de .resx filer i din byggprocess som du litar på.

Parametrar

I följande tabell beskrivs parametrarna för den GenerateResource aktiviteten.

Parameter Beskrivning
AdditionalInputs Valfri ITaskItem[] parameter.

Innehåller ytterligare indata till beroendekontrollen som utförs av den här uppgiften. Till exempel bör projektet och målfilerna vanligtvis vara indata, så att om de uppdateras återskapas alla resurser.
EnvironmentVariables Valfri String[] parameter.

Anger en matris med namn/värde-par med miljövariabler som ska skickas till den skapade resgen.exe, förutom (eller selektivt åsidosätter) det vanliga miljöblocket.
ExcludedInputPaths Valfri ITaskItem[] parameter.

Anger en matris med objekt som anger sökvägar som spårade indata ska ignoreras från under uppdaterad kontroll.
ExecuteAsTool Valfri Boolean parameter.

Om truekörs tlbimp.exe och aximp.exe från lämpligt målramverk för att generera nödvändiga omslutningssammansättningar. Den här parametern tillåter flera mål för ResolveComReferences.
FilesWritten Valfri ITaskItem[] utdataparameter.

Innehåller namnen på alla filer som skrivits till disken, inklusive cachefilen, om det finns några. Den här parametern är användbar för implementeringar av Clean.
MinimalRebuildFromTracking Valfri Boolean parameter.

Hämtar eller anger en växel som anger om spårad inkrementell version ska användas. Om trueaktiveras inkrementell version. annars kommer en ombyggnad att tvingas.
NeverLockTypeAssemblies Valfri Boolean parameter.

Hämtar eller anger ett booleskt värde som anger om du vill skapa en ny AppDomain- för att utvärdera resurserna (.resx) filer (sant) eller skapa en ny AppDomain endast när resursfilerna refererar till en användares sammansättning (false).
OutputResources Valfri ITaskItem[] utdataparameter.

Anger namnet på de genererade filerna, till exempel .resources filer. Om du inte anger något namn används namnet på den matchande indatafilen och den .resources fil som skapas placeras i katalogen som innehåller indatafilen.
PublicClass Valfri Boolean parameter.

Om trueskapar du en resursklass med stark typ som en offentlig klass.
References Valfri String[] parameter.

Referenser till inläsningstyper i .resx filer från. .resx fildataelement kan ha en .NET-typ. När .resx fil läses måste den här typen matchas. Vanligtvis löses den med hjälp av standardtypinläsningsregler. Om du anger sammansättningar i Referenceshar de företräde.

Den här parametern krävs inte för starkt skrivna resurser.
SdkToolsPath Valfri String parameter.

Anger sökvägen till SDK-verktygen, till exempel resgen.exe.
Sources Obligatorisk ITaskItem[] parameter.

Anger vilka objekt som ska konverteras. Objekt som skickas till den här parametern måste ha något av följande filnamnstillägg:

- .txt: Anger tillägget för en textfil som ska konverteras. Textfiler kan bara innehålla strängresurser.
- .resx: Anger tillägget för en XML-baserad resursfil som ska konverteras.
- .restext: Anger samma format som .txt. Det här andra tillägget är användbart om du vill skilja källfiler som innehåller resurser från andra källfiler i byggprocessen.
- .resources: Anger tillägget för en resursfil som ska konverteras.
StateFile Valfri ITaskItem parameter.

Anger sökvägen till en valfri cachefil som används för att påskynda beroendekontroll av länkar i .resx indatafiler.
StronglyTypedClassName Valfri String parameter.

Anger klassnamnet för den starkt typerade resursklassen. Om den här parametern inte anges används basnamnet för resursfilen.
StronglyTypedFilename Valfri ITaskItem parameter.

Anger filnamnet för källfilen. Om den här parametern inte anges används namnet på klassen som basfilnamn, med tillägget beroende på språket. Till exempel: MyClass.cs.
StronglyTypedLanguage Valfri String parameter.

Anger vilket språk som ska användas när du genererar klasskällan för den starkt typerade resursen. Den här parametern måste matcha exakt ett av de språk som används av CodeDomProvider. Till exempel: VB eller C#.

Genom att skicka ett värde till den här parametern instruerar du uppgiften att generera starkt maskinskrivna resurser.
StronglyTypedManifestPrefix Valfri String parameter.

Anger resursnamnområdet eller manifestprefixet som ska användas i den genererade klasskällan för den starkt typerade resursen.
StronglyTypedNamespace Valfri String parameter.

Anger det namnområde som ska användas för den genererade klasskällan för den starkt typerade resursen. Om den här parametern inte anges finns alla starkt skrivna resurser i det globala namnområdet.
TLogReadFiles Valfritt ITaskItem[] skrivskyddad parameter.

Hämtar en matris med objekt som representerar lässpårningsloggarna.
TLogWriteFiles Valfritt ITaskItem[] skrivskyddad parameter.

Hämtar en matris med objekt som representerar skrivspårningsloggarna.
ToolArchitecture Valfri System.String parameter.

Används för att avgöra om Tracker.exe måste användas för att skapa ResGen.exe.

Bör vara parsbar för en medlem i ExecutableType uppräkning. Om String.Emptyanvänder en heuristisk för att fastställa en standardarkitektur. Bör vara parsbar för en medlem i Microsoft.Build.Utilities.ExecutableType uppräkning.
TrackerFrameworkPath Valfri String parameter.

Anger sökvägen till lämplig .NET Framework-plats som innehåller FileTracker.dll.

Om det anges tar användaren ansvar för att se till att biten i FileTracker.dll som de skickar matchar bitigheten i de ResGen.exe som de tänker använda. Om den inte har angetts bestämmer uppgiften lämplig plats baserat på den aktuella .NET Framework-versionen.
TrackerLogDirectory Valfri String parameter.

Anger den mellanliggande katalog som spårningsloggarna från att köra den här aktiviteten ska placeras i.
TrackerSdkPath Valfri String parameter.

Anger sökvägen till lämplig Windows SDK-plats som innehåller Tracker.exe.

Om det anges tar användaren ansvar för att se till att biten i Tracker.exe som de skickar matchar bitigheten i de ResGen.exe som de tänker använda. Om den inte har angetts bestämmer uppgiften lämplig plats baserat på aktuell Windows SDK.
TrackFileAccess Valfri Boolean parameter.

Om det är sant används katalogen för indatafilen för att matcha relativa filsökvägar.
UsePreserializedResources Valfri Boolean parameter.

Om trueanger anger du att icke-Strängresurser ska serialiseras med hjälp av PreserializedResourceWriter i stället för ResourceWriter, som inte stöds på .NET Core eller .NET 5 eller senare.
UseSourcePath Valfri Boolean parameter.

Om trueanger anger du att indatafilens katalog ska användas för att matcha relativa filsökvägar.

Anmärkningar

Eftersom .resx filer kan innehålla länkar till andra resursfiler räcker det inte att bara jämföra .resx och .resources filtidsstämplar för att se om utdata är uppdaterade. I stället följer GenerateResource-aktiviteten länkarna i .resx-filerna och kontrollerar även tidsstämplarna för de länkade filerna. Det innebär att du vanligtvis inte bör använda Inputs och Outputs attribut på målet som innehåller GenerateResource uppgift, eftersom det kan leda till att den hoppas över när den faktiskt ska köras.

Förutom de parametrar som anges ovan ärver den här aktiviteten parametrar från klassen TaskExtension, som i sig ärver från klassen Task. En lista över dessa ytterligare parametrar och deras beskrivningar finns i TaskExtension-basklassen.

När du använder MSBuild 4.0 för att rikta in sig på .NET 3.5-projekt kan bygget misslyckas på x86-resurser. Du kan lösa det här problemet genom att skapa målet som en AnyCPU-sammansättning.

Parametern UsePreserializedResources hämtar sitt värde från egenskapen $(GenerateResourceUsePreserializedResources) i den normala .NET-byggprocessen. Den här egenskapen är inställd på true som standard i .NET Core-projekt och -projekt som använder .NET 5 eller senare. Du kan ange $(GenerateResourceUsePreserializedResources) till true så att .NET SDK kan skapa projekt som är riktade mot .NET Framework 4.6.1 eller senare som använder icke-strängresurser. Sammansättningen System.Resources.Extensions måste vara tillgänglig vid körning. Den är tillgänglig i .NET Core 3.0 och senare och .NET 5 och senare och kan användas i .NET Framework 4.6.1 eller senare via PackageReference.|

Exempel

I följande exempel används uppgiften GenerateResource för att generera .resources filer från de filer som anges av Resx-objektsamlingen.

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

Den GenerateResource aktiviteten använder <LogicalName> metadata för ett <EmbeddedResource> objekt för att namnge resursen som är inbäddad i en sammansättning.

Förutsatt att sammansättningen heter myAssembly genererar följande kod en inbäddad resurs med namnet someQualifier.someResource.resources:

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

Utan <LogicalName> metadata skulle resursen namnges myAssembly.myResource.resources. Det här exemplet gäller endast för Visual Basic- och Visual C#-byggprocessen.

Se även