Freigeben über


GenerateResource-Aufgabe

Konvertiert zwischen .txt- und .resx dateien (XML-basiertes Ressourcenformat) und binären .resources-Dateien, die in eine binäre ausführbare Laufzeit eingebettet oder in Satellitenassemblys kompiliert werden können. Diese Aufgabe wird in der Regel verwendet, um .txt oder .resx Dateien in .resources Dateien zu konvertieren. Die GenerateResource Aufgabe ähnelt funktionell resgen.exe.

Vorsicht

Ressourcen in .resx Dateien können mithilfe von BinaryFormatterserialisiert werden, was nicht sicherenist. Schließen Sie nur die .resx Dateien in Ihren Buildprozess ein, dem Sie vertrauen.

Parameter

In der folgenden Tabelle werden die Parameter des GenerateResource Vorgangs beschrieben.

Parameter Beschreibung
AdditionalInputs Optionaler ITaskItem[]-Parameter.

Enthält zusätzliche Eingaben für die Von diesem Vorgang durchgeführte Abhängigkeitsüberprüfung. Das Projekt und die Zieldateien sollten in der Regel Eingaben sein, sodass alle Ressourcen neu generiert werden, wenn sie aktualisiert werden.
EnvironmentVariables Optionaler String[]-Parameter.

Gibt ein Array von Namens-Wert-Paaren von Umgebungsvariablen an, die zusätzlich zum regulären Umgebungsblock an die spawned resgen.exeübergeben werden sollen (oder selektiv außer Kraft setzen).
ExcludedInputPaths Optionaler ITaskItem[]-Parameter.

Gibt ein Array von Elementen an, die Pfade angeben, aus denen nachverfolgte Eingaben während der Überprüfung auf dem neuesten Stand ignoriert werden.
ExecuteAsTool Optionaler Boolean-Parameter.

Wenn true, wird tlbimp.exe und aximp.exe aus dem entsprechenden Zielframework ausgeführt, um die erforderlichen Wrapperassemblys zu generieren. Dieser Parameter ermöglicht die Mehrfachadressierung von ResolveComReferences.
FilesWritten Optionaler ITaskItem[] Ausgabeparameter.

Enthält die Namen aller Dateien, die auf den Datenträger geschrieben wurden, einschließlich der Cachedatei, falls vorhanden. Dieser Parameter ist nützlich für Implementierungen von Clean.
MinimalRebuildFromTracking Optionaler Boolean-Parameter.

Dient zum Abrufen oder Festlegen eines Schalters, der angibt, ob nachverfolgte inkrementelle Build verwendet wird. Wenn true, ist der inkrementelle Build aktiviert; andernfalls wird eine Neuerstellung erzwungen.
NeverLockTypeAssemblies Optionaler Boolean-Parameter.

Dient zum Abrufen oder Festlegen eines booleschen Werts, der angibt, ob eine neue AppDomain- zum Auswerten der Ressourcendateien (.resx) oder zum Erstellen einer neuen AppDomain- nur dann erstellt werden soll, wenn die Ressourcendateien auf die Assembly eines Benutzers verweisen (false).
OutputResources Optionaler ITaskItem[] Ausgabeparameter.

Gibt den Namen der generierten Dateien an, z. B. .resources Dateien. Wenn Sie keinen Namen angeben, wird der Name der übereinstimmenden Eingabedatei verwendet, und die erstellte .resources Datei wird in das Verzeichnis eingefügt, das die Eingabedatei enthält.
PublicClass Optionaler Boolean-Parameter.

Wenn true, wird eine stark typierte Ressourcenklasse als öffentliche Klasse erstellt.
References Optionaler String[]-Parameter.

Verweise auf das Laden von Typen in .resx Dateien aus. .resx Dateidatenelemente verfügen möglicherweise über einen .NET-Typ. Wenn die RESX- Datei gelesen wird, muss dieser Typ aufgelöst werden. In der Regel wird sie mithilfe von Standardtypladeregeln erfolgreich aufgelöst. Wenn Sie Assemblys in Referencesbereitstellen, haben sie Vorrang.

Dieser Parameter ist für stark typierte Ressourcen nicht erforderlich.
SdkToolsPath Optionaler String-Parameter.

Gibt den Pfad zu den SDK-Tools an, z. B. resgen.exe.
Sources Erforderlicher ITaskItem[]-Parameter.

Gibt die zu konvertierenden Elemente an. An diesen Parameter übergebene Elemente müssen über eine der folgenden Dateierweiterungen verfügen:

- .txt: Gibt die Erweiterung für eine zu konvertierende Textdatei an. Textdateien können nur Zeichenfolgenressourcen enthalten.
- .resx: Gibt die Erweiterung für eine XML-basierte Ressourcendatei an, die konvertiert werden soll.
- .restext: Gibt das gleiche Format wie .txtan. Diese andere Erweiterung ist nützlich, wenn Sie Quelldateien eindeutig unterscheiden möchten, die Ressourcen aus anderen Quelldateien in Ihrem Buildprozess enthalten.
- .resources: Gibt die Erweiterung für eine zu konvertierende Ressourcendatei an.
StateFile Optionaler ITaskItem-Parameter.

Gibt den Pfad zu einer optionalen Cachedatei an, die verwendet wird, um die Abhängigkeitsüberprüfung von Verknüpfungen in .resx Eingabedateien zu beschleunigen.
StronglyTypedClassName Optionaler String-Parameter.

Gibt den Klassennamen für die stark typisierte Ressourcenklasse an. Wenn dieser Parameter nicht angegeben ist, wird der Basisname der Ressourcendatei verwendet.
StronglyTypedFilename Optionaler ITaskItem-Parameter.

Gibt den Dateinamen für die Quelldatei an. Wenn dieser Parameter nicht angegeben ist, wird der Name der Klasse als Basisdateiname verwendet, wobei die Erweiterung von der Sprache abhängig ist. Beispiel: MyClass.cs.
StronglyTypedLanguage Optionaler String-Parameter.

Gibt die Sprache an, die beim Generieren der Klassenquelle für die stark typierte Ressource verwendet werden soll. Dieser Parameter muss genau einer der sprachen entsprechen, die vom CodeDomProvider verwendet werden. Beispiel: VB oder C#.

Indem Sie einen Wert an diesen Parameter übergeben, weisen Sie den Vorgang an, stark typierte Ressourcen zu generieren.
StronglyTypedManifestPrefix Optionaler String-Parameter.

Gibt das Ressourcennamespace- oder Manifestpräfix an, das in der generierten Klassenquelle für die stark typisierte Ressource verwendet werden soll.
StronglyTypedNamespace Optionaler String-Parameter.

Gibt den Namespace an, der für die generierte Klassenquelle für die stark typierte Ressource verwendet werden soll. Wenn dieser Parameter nicht angegeben ist, befinden sich alle stark typisierten Ressourcen im globalen Namespace.
TLogReadFiles Optionaler ITaskItem[] schreibgeschützter Parameter.

Ruft ein Array von Elementen ab, die die Leseverfolgungsprotokolle darstellen.
TLogWriteFiles Optionaler ITaskItem[] schreibgeschützter Parameter.

Ruft ein Array von Elementen ab, die die Schreibverfolgungsprotokolle darstellen.
ToolArchitecture Optionaler System.String-Parameter.

Wird verwendet, um zu bestimmen, ob Tracker.exe verwendet werden muss, um ResGen.exezu spawnen.

Sollte für ein Element der ExecutableType-Aufzählung analysiert werden. Wenn String.Empty, wird eine Heuristik verwendet, um eine Standardarchitektur zu bestimmen. Sollte für ein Element der Microsoft.Build.Utilities.ExecutableType-Aufzählung analysiert werden.
TrackerFrameworkPath Optionaler String-Parameter.

Gibt den Pfad zum entsprechenden .NET Framework-Speicherort an, der FileTracker.dllenthält.

Wenn festgelegt, übernimmt der Benutzer die Verantwortung, sicherzustellen, dass die Bitanzahl der FileTracker.dll, die sie bestehen, der Bitanzahl der ResGen.exe entspricht, die sie verwenden möchten. Wenn sie nicht festgelegt ist, entscheidet die Aufgabe basierend auf der aktuellen .NET Framework-Version den geeigneten Speicherort.
TrackerLogDirectory Optionaler String-Parameter.

Gibt das Zwischenverzeichnis an, in das die Tracking-Protokolle aus der Ausführung dieser Aufgabe platziert werden.
TrackerSdkPath Optionaler String-Parameter.

Gibt den Pfad zum entsprechenden Windows SDK-Speicherort an, der Tracker.exeenthält.

Wenn festgelegt, übernimmt der Benutzer die Verantwortung, sicherzustellen, dass die Bitanzahl der Tracker.exe, die sie bestehen, der Bitanzahl der ResGen.exe entspricht, die sie verwenden möchten. Wenn sie nicht festgelegt ist, entscheidet die Aufgabe basierend auf dem aktuellen Windows SDK den geeigneten Speicherort.
TrackFileAccess Optionaler Boolean-Parameter.

Bei "true" wird das Verzeichnis der Eingabedatei zum Auflösen relativer Dateipfade verwendet.
UsePreserializedResources Optionaler Boolean-Parameter.

Wenn true, gibt an, dass Ressourcen, die keine Zeichenfolgen sind, mithilfe von PreserializedResourceWriter anstelle von ResourceWriterserialisiert werden sollen, die auf .NET Core oder .NET 5 oder höher nicht unterstützt wird.
UseSourcePath Optionaler Boolean-Parameter.

Wenn true, gibt an, dass das Verzeichnis der Eingabedatei zum Auflösen relativer Dateipfade verwendet werden soll.

Bemerkungen

Da .resx Dateien möglicherweise Links zu anderen Ressourcendateien enthalten können, reicht es nicht aus, einfach .resx zu vergleichen und .resources Dateizeitstempel, um festzustellen, ob die Ausgaben auf dem neuesten Stand sind. Stattdessen folgt die GenerateResource Aufgabe den Links in den .resx Dateien und überprüft auch die Zeitstempel der verknüpften Dateien. Dies bedeutet, dass Sie nicht im Allgemeinen Inputs und Outputs Attribute für das Ziel verwenden sollten, das die GenerateResource Aufgabe enthält, da dies dazu führen kann, dass sie übersprungen wird, wenn sie tatsächlich ausgeführt werden soll.

Zusätzlich zu den oben aufgeführten Parametern erbt diese Aufgabe Parameter von der TaskExtension-Klasse, die selbst von der Task-Klasse erbt. Eine Liste dieser zusätzlichen Parameter und deren Beschreibungen finden Sie unter TaskExtension-Basisklasse.

Bei Verwendung von MSBuild 4.0 für .NET 3.5-Projekte kann der Build für x86-Ressourcen fehlschlagen. Um dieses Problem zu umgehen, können Sie das Ziel als AnyCPU-Assembly erstellen.

Der Parameter UsePreserializedResources ruft seinen Wert aus der Eigenschaft $(GenerateResourceUsePreserializedResources) im normalen .NET-Buildprozess ab. Diese Eigenschaft ist standardmäßig auf true in .NET Core-Projekten und -Projekten festgelegt, die .NET 5 oder höher verwenden. Sie können $(GenerateResourceUsePreserializedResources) auf true festlegen, damit das .NET SDK Projekte für .NET Framework 4.6.1 oder höher erstellt, die Ressourcen ohne Zeichenfolgen verwenden. Die Assembly-System.Resources.Extensions muss zur Laufzeit verfügbar sein. Sie ist in .NET Core 3.0 und höher und .NET 5 und höher verfügbar und kann in .NET Framework 4.6.1 oder höher über PackageReference verwendet werden.|

Beispiel

Im folgenden Beispiel wird die GenerateResource Aufgabe verwendet, um .resources Dateien aus den durch die Resx Elementauflistung angegebenen Dateien zu generieren.

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

Der GenerateResource Vorgang verwendet die <LogicalName> Metadaten eines <EmbeddedResource> Elements, um die Ressource zu benennen, die in eine Assembly eingebettet ist.

Wenn die Assembly "myAssembly" heißt, generiert der folgende Code eine eingebettete Ressource mit dem Namen someQualifier.someResource.resources:

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

Ohne die <LogicalName> Metadaten würde die Ressource myAssembly.myResource.resourcesbenannt. Dieses Beispiel gilt nur für den Visual Basic- und Visual C#-Buildprozess.

Siehe auch