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 true kö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 true aktiveras 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 true skapar 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 References har 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.Empty anvä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 true anger 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 true anger 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.