Udostępnij za pośrednictwem


GenerateResource — zadanie

Konwertuje .txt .resx pliki binarne środowiska uruchomieniowego i (format zasobów oparty na formacie XML) i pliki binarne środowiska uruchomieniowego języka wspólnego, które mogą być osadzone w pliku wykonywalnym .resources binarnym środowiska uruchomieniowego lub skompilowane w zestawy satelitarne. To zadanie jest zwykle używane do konwertowania .txt plików lub .resx plików na .resources pliki. Zadanie GenerateResource jest funkcjonalnie podobne do resgen.exe.

Uwaga

Zasoby w .resx plikach mogą być serializowane przy użyciu metody BinaryFormatter, która nie jest bezpieczna. Uwzględnij tylko te .resx pliki w procesie kompilacji, którym ufasz.

Parametry

W poniższej tabeli opisano parametry GenerateResource zadania.

Parametr Opis
AdditionalInputs Opcjonalny ITaskItem[] parametr.

Zawiera dodatkowe dane wejściowe do sprawdzania zależności wykonywanego przez to zadanie. Na przykład pliki projektu i elementów docelowych zwykle powinny być danymi wejściowymi, aby w przypadku ich aktualizacji wszystkie zasoby były generowane ponownie.
EnvironmentVariables Opcjonalny String[] parametr.

Określa tablicę par nazwa-wartość zmiennych środowiskowych, które powinny być przekazywane do zduplikowanych resgen.exe, oprócz (lub selektywnie przesłaniania) zwykłego bloku środowiskowego.
ExcludedInputPaths Opcjonalny ITaskItem[] parametr.

Określa tablicę elementów, które określają ścieżki, z których śledzone dane wejściowe będą ignorowane podczas sprawdzania aktualnego.
ExecuteAsTool Opcjonalny Boolean parametr.

Jeśli trueprogram uruchamia tlbimp.exe i aximp.exe z odpowiedniej struktury docelowej out-of-proc w celu wygenerowania niezbędnych zestawów otoki. Ten parametr umożliwia użycie wielowersyjności elementu ResolveComReferences.
FilesWritten Opcjonalny ITaskItem[] parametr wyjściowy.

Zawiera nazwy wszystkich plików zapisanych na dysku. Obejmuje to plik pamięci podręcznej, jeśli istnieje. Ten parametr jest przydatny w przypadku implementacji funkcji Clean.
MinimalRebuildFromTracking Opcjonalny Boolean parametr.

Pobiera lub ustawia przełącznik określający, czy będzie używana śledzona kompilacja przyrostowa. Jeśli truekompilacja przyrostowa jest włączona. W przeciwnym razie zostanie wymuszona ponowna kompilacja.
NeverLockTypeAssemblies Opcjonalny Boolean parametr.

Pobiera lub ustawia wartość logiczną określającą, czy utworzyć nową domenę AppDomain w celu oceny plików zasobów (true) lub utworzyć nową wartość AppDomain tylko wtedy, gdy pliki zasobów odwołują się do zestawu użytkownika (false).
OutputResources Opcjonalny ITaskItem[] parametr wyjściowy.

Określa nazwę wygenerowanych plików, takich jak .resources pliki. Jeśli nie określisz nazwy, zostanie użyta nazwa pasującego pliku wejściowego, a .resources utworzony plik zostanie umieszczony w katalogu zawierającym plik wejściowy.
PublicClass Opcjonalny Boolean parametr.

Jeśli trueelement tworzy silnie typizowany klasę zasobów jako klasę publiczną.
References Opcjonalny String[] parametr.

Odwołania do typów ładowania w .resx plikach. .resx elementy danych pliku mogą mieć typ .NET. Gdy plik resx jest odczytywany, należy rozpoznać ten typ. Zazwyczaj jest on rozwiązywany pomyślnie przy użyciu reguł ładowania typu standardowego. Jeśli podajesz zestawy w programie References, mają pierwszeństwo.

Ten parametr nie jest wymagany dla silnie typiowanych zasobów.
SdkToolsPath Opcjonalny String parametr.

Określa ścieżkę do narzędzi zestawu SDK, takich jak resgen.exe.
Sources Wymagany parametr interfejsu ITaskItem[].

Określa elementy do konwersji. Elementy przekazane do tego parametru muszą mieć jedno z następujących rozszerzeń plików:

- .txt: określa rozszerzenie pliku tekstowego do konwersji. Pliki tekstowe mogą zawierać tylko zasoby ciągów.
- .resx: określa rozszerzenie pliku zasobów opartego na formacie XML do konwersji.
- .restext: określa ten sam format co .txt. To inne rozszerzenie jest przydatne, jeśli chcesz wyraźnie odróżnić pliki źródłowe zawierające zasoby z innych plików źródłowych w procesie kompilacji.
- .resources: określa rozszerzenie pliku zasobu do konwersji.
StateFile Opcjonalny ITaskItem parametr.

Określa ścieżkę do opcjonalnego pliku pamięci podręcznej używanego do przyspieszenia sprawdzania zależności łączy w plikach wejściowych resx .
StronglyTypedClassName Opcjonalny String parametr.

Określa nazwę klasy silnie typizowanej klasy zasobów. Jeśli ten parametr nie zostanie określony, zostanie użyta podstawowa nazwa pliku zasobu.
StronglyTypedFilename Opcjonalny ITaskItem parametr.

Określa nazwę pliku źródłowego. Jeśli ten parametr nie zostanie określony, nazwa klasy jest używana jako nazwa pliku podstawowego, z rozszerzeniem zależnym od języka. Na przykład: MyClass.cs.
StronglyTypedLanguage Opcjonalny String parametr.

Określa język używany podczas generowania źródła klasy dla silnie typizowanego zasobu. Ten parametr musi być zgodny z dokładnie jednym z języków używanych przez dostawcę CodeDomProvider. Na przykład: VB lub C#.

Przekazując wartość do tego parametru, należy poinstruować zadanie, aby wygenerowało silnie typizowane zasoby.
StronglyTypedManifestPrefix Opcjonalny String parametr.

Określa przestrzeń nazw zasobów lub prefiks manifestu do użycia w wygenerowanym źródle klasy dla silnie typizowanego zasobu.
StronglyTypedNamespace Opcjonalny String parametr.

Określa przestrzeń nazw do użycia dla wygenerowanego źródła klasy dla silnie typizowanego zasobu. Jeśli ten parametr nie zostanie określony, wszystkie silnie typizowane zasoby znajdują się w globalnej przestrzeni nazw.
TLogReadFiles Opcjonalny ITaskItem[] parametr tylko do odczytu.

Pobiera tablicę elementów reprezentujących dzienniki śledzenia odczytu.
TLogWriteFiles Opcjonalny ITaskItem[] parametr tylko do odczytu.

Pobiera tablicę elementów reprezentujących dzienniki śledzenia zapisu.
ToolArchitecture Opcjonalny System.String parametr.

Służy do określania, czy Tracker.exe należy użyć do zduplikowania ResGen.exe.

Należy przeanalizować element członkowski wyliczenia ExecutableType . Jeśli String.Emptyprogram używa metody heurystycznej do określenia architektury domyślnej. Należy przeanalizować element członkowski wyliczania Microsoft.Build.Utilities.ExecutableType.
TrackerFrameworkPath Opcjonalny String parametr.

Określa ścieżkę do odpowiedniej lokalizacji programu .NET Framework, która zawiera FileTracker.dll.

W przypadku ustawienia użytkownik ponosi odpowiedzialność za upewnienie się, że bitowość FileTracker.dll, którą przekazuje, jest zgodna z bitowością ResGen.exe, której zamierza użyć. Jeśli nie zostanie ustawiona, zadanie decyduje o odpowiedniej lokalizacji na podstawie bieżącej wersji programu .NET Framework.
TrackerLogDirectory Opcjonalny String parametr.

Określa katalog pośredni, do którego zostaną umieszczone dzienniki śledzenia z uruchamiania tego zadania.
TrackerSdkPath Opcjonalny String parametr.

Określa ścieżkę do odpowiedniej lokalizacji zestawu Windows SDK, która zawiera Tracker.exe.

W przypadku ustawienia użytkownik ponosi odpowiedzialność za upewnienie się, że bitowość Tracker.exe, którą przekazuje, jest zgodna z bitowością ResGen.exe, której zamierza użyć. Jeśli nie zostanie ustawiona, zadanie decyduje o odpowiedniej lokalizacji na podstawie bieżącego zestawu Windows SDK.
TrackFileAccess Opcjonalny Boolean parametr.

Jeśli to prawda, katalog pliku wejściowego jest używany do rozpoznawania względnych ścieżek plików.
UsePreserializedResources Opcjonalny Boolean parametr.

Jeśli trueparametr określa, że zasoby inne niż ciąg mają być serializowane przy użyciu PreserializedResourceWriter zamiast ResourceWriter, który nie jest obsługiwany w programie .NET Core lub .NET 5 lub nowszym.
UseSourcePath Opcjonalny Boolean parametr.

Jeśli trueparametr określa, że katalog pliku wejściowego ma być używany do rozpoznawania względnych ścieżek plików.

Uwagi

Ponieważ .resx pliki mogą zawierać linki do innych plików zasobów, nie wystarczy po prostu porównać .resx znaczniki czasu pliku i .resources sprawdzić, czy dane wyjściowe są aktualne. GenerateResource Zamiast tego zadanie jest zgodne z linkami w .resx plikach i sprawdza również znaczniki czasu połączonych plików. Oznacza to, że nie należy zwykle używać Inputs atrybutów i Outputs w obiekcie docelowym zawierającym GenerateResource zadanie, ponieważ może to spowodować pominięcie go, gdy faktycznie powinno zostać uruchomione.

Oprócz parametrów wymienionych powyżej to zadanie dziedziczy parametry z TaskExtension klasy, która sama dziedziczy z Task klasy. Aby uzyskać listę tych dodatkowych parametrów i ich opisy, zobacz TaskExtension, klasa bazowa.

W przypadku używania programu MSBuild 4.0 do docelowych projektów platformy .NET 3.5 kompilacja może zakończyć się niepowodzeniem w zasobach x86. Aby obejść ten problem, możesz skompilować element docelowy jako zestaw AnyCPU.

Parametr UsePreserializedResources pobiera wartość z właściwości $(GenerateResourceUsePreserializedResources) w normalnym procesie kompilacji platformy .NET. Ta właściwość jest domyślnie ustawiona true w projektach platformy .NET Core i projektach korzystających z platformy .NET 5 lub nowszej. Możesz ustawić wartość $(GenerateResourceUsePreserializedResources) , true aby umożliwić zestawowi .NET SDK kompilowanie projektów przeznaczonych dla programu .NET Framework 4.6.1 lub nowszego, które używają zasobów innych niż ciąg. Zestaw System.Resources.Extensions musi być dostępny w czasie wykonywania. Jest ona dostępna w programie .NET Core 3.0 lub nowszym oraz na platformie .NET 5 lub nowszym oraz może być używana w programie .NET Framework 4.6.1 lub nowszym za pośrednictwem funkcji PackageReference.|

Przykład

W poniższym przykładzie użyto GenerateResource zadania do wygenerowania .resources plików z plików określonych przez Resx kolekcję elementów.

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

Zadanie GenerateResource używa <LogicalName> metadanych <EmbeddedResource> elementu, aby nazwać zasób osadzony w zestawie.

Zakładając, że zestaw ma nazwę myAssembly, następujący kod generuje zasób osadzony o nazwie someQualifier.someResource.resources:

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

<LogicalName> Bez metadanych zasób ma nazwę myAssembly.myResource.resources. Ten przykład dotyczy tylko procesu kompilacji Visual Basic i Visual C#.

Zobacz też