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 true program 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 true kompilacja 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 true element 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.Empty program 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 true parametr 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 true parametr 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#.