GenerateResource-Aufgabe

Konvertiert zwischen .txt- und .resx-Dateien (im XML-basierten Ressourcenformat) und binären .resources-Dateien der Common Language Runtime, die in eine ausführbare Laufzeitbinärdatei 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 ist funktional identisch mit resgen.exe.

Parameter

In der folgenden Tabelle werden die Parameter der GenerateResource -Aufgabe beschrieben.

Parameter Beschreibung
AdditionalInputs Optionaler ITaskItem[]-Parameter

Enthält zusätzliche Eingaben für die Abhängigkeitsüberprüfung, die von dieser Aufgabe ausgeführt wird. Beispielsweise sollten die Projekt- und Zieldateien in der Regel Eingaben sein, damit bei ihrer Aktualisierung alle Ressourcen neu generiert werden.
EnvironmentVariables Optionaler String[]-Parameter.

Gibt ein Array von Name-Wert-Paaren von Umgebungsvariablen an, das zusätzlich zum regulären Umgebungsblock (oder diesen selektiv überschreibend) an die erzeugte resgen.exe übergeben werden sollte.
ExcludedInputPaths Optionaler ITaskItem[]-Parameter

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

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

Enthält die Namen aller auf den Datenträger geschriebenen Dateien. Dies schließt ggf. auch die Cachedatei ein. Dieser Parameter ist hilfreich für Implementierungen des Bereinigens.
MinimalRebuildFromTracking Optionaler Boolean-Parameter.

Ruft einen Schalter ab, der angibt, ob ein nachverfolgter inkrementeller Build verwendet wird, oder legt ihn fest. Wenn true, wird der inkrementelle Build aktiviert; andernfalls wird eine erneute Erstellung erzwungen.
NeverLockTypeAssemblies Optionaler Boolean-Parameter.

Dient zum Abrufen oder Festlegen eines booleschen Werts, der angibt, ob eine neue AppDomain zum Auswerten der Ressourcendateien (RESX) erstellt werden soll (true) oder ob eine neue AppDomain nur 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. der .resources-Dateien). Wenn Sie keinen Namen angeben, wird der Name der entsprechenden Eingabedatei verwendet, und die erstellte .resources-Datei wird in dem Verzeichnis gespeichert, das die Eingabedatei enthält.
PublicClass Optionaler Boolean-Parameter.

Bei true wird eine stark typisierte Ressourcenklasse als öffentliche Klasse erstellt.
References Optionaler String[]-Parameter.

Verweise zum Laden von Typen in .resx-Dateien. Datenelemente der .resx-Datei können vom Typ „.NET“ sein. Wenn die RESX-Datei gelesen wird, muss dieser Typ aufgelöst werden. In der Regel wird dies mit Typladungsregeln erfolgreich aufgelöst. Wenn Sie in References Assemblys angeben, haben diese Vorrang.

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

Legt den Pfad zu den SDK-Tools fest, wie z.B. resgen.exe.
Sources Erforderlicher ITaskItem[]-Parameter.

Gibt die zu konvertierenden Elemente an. An diesen Parameter übergebene Elemente müssen eine der folgenden Erweiterungen aufweisen:

- .txt: Gibt die Erweiterung für eine zu konvertierende Textdatei an. Textdateien dürfen nur Zeichenfolgenressourcen enthalten.
- .resx: Gibt die Erweiterung für eine zu konvertierende XML-basierte Ressourcendatei an.
- .restext: Gibt das gleiche Format wie .txt an. Diese andere Erweiterung ist nützlich, wenn Sie Quelldateien klar 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 zum Beschleunigen der Abhängigkeitsprüfung von Verknüpfungen in RESX-Eingabedateien verwendet wird.
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 der Quelldatei an. Wenn dieser Parameter nicht angegeben ist, wird der Name der Klasse mit sprachabhängiger Erweiterung als Basisdateiname verwendet. Beispiel: MyClass.cs.
StronglyTypedLanguage Optionaler String-Parameter.

Gibt die Sprache an, die beim Generieren der Klassenquelle für die Ressource mit starker Typisierung verwendet werden soll. Dieser Parameter muss genau mit einer der Sprachen übereinstimmen, die von CodeDomProvider verwendet werden. Beispiel: VB oder C#.

Mit der Übergabe eines Werts an diesen Parameter weisen Sie die Aufgabe an, stark typisierte Ressourcen zu generieren.
StronglyTypedManifestPrefix Optionaler String-Parameter.

Gibt den Ressourcennamespace oder das Manifestpräfix zur Verwendung in der generierten Klassenquelle für die Ressource mit starker Typisierung an.
StronglyTypedNamespace Optionaler String-Parameter.

Gibt den Namespace an, der für die generierte Klassenquelle für die Ressource mit starker Typisierung verwendet werden soll. Wenn dieser Parameter nicht angegeben wird, befinden sich alle Ressourcen mit starker Typisierung im globalen Namespace.
TLogReadFiles Optionaler schreibgeschützter ITaskItem[]-Parameter.

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

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

Wird verwendet, um zu bestimmen, ob Tracker.exe zum Erzeugen von ResGen.exe verwendet werden muss oder nicht.

Sollte als Mitglied der ExecutableType-Enumeration analysierbar sein. Wenn String.Empty, wird eine Heuristik zum Ermitteln einer Standardarchitektur verwendet. Sollte als Mitglied der Microsoft.Build.Utilities.ExecutableType-Enumeration analysierbar sein.
TrackerFrameworkPath Optionaler String-Parameter.

Gibt den Pfad zu dem entsprechenden .NET Framework-Speicherort an, der FileTracker.dll enthält.

Wenn festgelegt, übernimmt der Benutzer die Verantwortung dafür, sicherzustellen, dass die Bitanzahl von FileTracker.dll, die übergeben wird, der Bitanzahl von ResGen.exe entspricht, die verwendet werden soll. Wenn nicht festgelegt, wählt die Aufgabe den entsprechenden Speicherort basierend auf der aktuellen .NET Framework-Version.
TrackerLogDirectory Optionaler String-Parameter.

Gibt das temporäre Verzeichnis an, in dem die Nachverfolgungsprotokolle vom Ausführen dieser Aufgabe gespeichert werden.
TrackerSdkPath Optionaler String-Parameter.

Gibt den Pfad zu dem entsprechenden Windows SDK-Speicherort an, der Tracker.exe enthält.

Wenn dieser festgelegt ist, übernimmt der Benutzer die Verantwortung dafür, sicherzustellen, dass die Bitanzahl von Tracker.exe, die übergeben wird, der Bitanzahl von ResGen.exe entspricht, die verwendet werden soll. Wenn nicht festgelegt, wählt die Aufgabe den entsprechenden Speicherort basierend auf der aktuellen Windows SDK-Version.
TrackFileAccess Optionaler Boolean-Parameter.

Wenn „true“, wird das Verzeichnis der Eingabedatei zum Auflösen relativer Dateipfade verwendet.
UsePreserializedResources Optionaler Boolean-Parameter.

true bedeutet, dass zeichenfolgenfremde Ressourcen nicht mit ResourceWriter, sondern mit PreserializedResourceWriter serialisiert werden sollen. Dies wird in .NET Core sowie ab .NET 5 nicht unterstützt.
UseSourcePath Optionaler Boolean-Parameter.

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

Bemerkungen

Da .resx-Dateien möglicherweise Links zu anderen Ressourcendateien enthalten, ist es nicht ausreichend, einfach die Zeitstempel von .resx- und .resources-Dateien zu vergleichen, um zu ermitteln, ob die Ausgaben aktuell sind. Stattdessen folgt die GenerateResource-Aufgabe den Links in den .resx-Dateien und prüft ebenfalls die Zeitstempel der verknüpften Dateien. Dies bedeutet, dass Sie Inputs- und Outputs-Attribute nicht allgemein für das Ziel verwenden sollten, das die GenerateResource-Aufgabe enthält, da dies dazu führen könnte, dass es übersprungen wird, wenn es tatsächlich ausgeführt werden sollte.

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 mit diesen zusätzlichen Parametern und ihren Beschreibungen finden Sie unter TaskExtension-Basisklasse.

Bei der Verwendung von MSBuild 4.0 für .NET 3.5-Projekte könnte bei der Ausführung des Builds auf x86-Ressourcen ein Fehler auftreten. Um dieses Problem zu umgehen, können Sie das Ziel als AnyCPU-Assembly erstellen.

Der Parameter UsePreserializedResources erhält seinen Wert im normalen .NET-Buildprozess von der Eigenschaft $(GenerateResourceUsePreserializedResources). Diese Eigenschaft ist in .NET Core-Projekten und in Projekten, in denen mindestens .NET 5 verwendet wird, standardmäßig auf true festgelegt. Sie können $(GenerateResourceUsePreserializedResources) auf true festlegen, damit das .NET SDK Projekte für .NET Framework 4.6.1 oder höhere Versionen erstellen kann, von denen zeichenfolgenfremde Ressourcen verwendet werden. Die Assembly System.Resources.Extensions muss zur Laufzeit verfügbar sein. Sie ist ab .NET Core 3.0 bzw. ab .NET 5 verfügbar und kann ab .NET Framework 4.6.1 über „PackageReference“ verwendet werden.

Beispiel

Im folgenden Beispiel wird die GenerateResource-Aufgabe verwendet, um .resources-Dateien aus den Dateien zu generieren, die von der Resx-Elementsammlung angegeben werden.

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

Die GenerateResource-Aufgabe verwendet die <LogicalName>-Metadaten eines <EmbeddedResource>-Elements, um die Ressource zu benennen, die in einer Assembly eingebettet ist.

Unter der Voraussetzung, dass die Assembly „myAssembly“ genannt wird, generiert der folgende Code eine eingebettete Ressource namens someQualifier.someResource.resources:

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

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

Weitere Informationen