Condividi tramite


GenerateResource (attività)

Converte tra .txt file e .resx (formato di risorse basato su XML) e file binari .resources common Language Runtime che possono essere incorporati in un eseguibile binario di runtime o compilati in assembly satellite. Questa attività viene in genere usata per convertire o .resx file .txt in .resources file. Dal punto di vista funzionale, l'attività GenerateResource è simile a resgen.exe.

Parametri

Nella tabella che segue vengono descritti i parametri dell'attività GenerateResource.

Parametro Descrizione
AdditionalInputs Parametro ITaskItem[] facoltativo.

Contiene input aggiuntivi per il controllo delle dipendenze eseguito da questa attività. Ad esempio, è in genere opportuno inserire come input i file di progetto e di destinazione, in modo da consentire la rigenerazione di tutte le risorse in caso di aggiornamento.
EnvironmentVariables Parametro String[] facoltativo.

Specifica una matrice di coppie nome/valore di variabili di ambiente che devono essere passate al file resgen.exe generato, oltre al normale blocco di ambiente (o all'esecuzione selettiva dell'override).
ExcludedInputPaths Parametro ITaskItem[] facoltativo.

Specifica una matrice di elementi che specificano i percorsi da cui gli input rilevati verranno ignorati durante il controllo aggiornato.
ExecuteAsTool Parametro Boolean facoltativo.

Se true, esegue i file tlbimp.exe e aximp.exe dal framework di destinazione appropriato in modalità out-of-process per generare gli assembly wrapper necessari. Questo parametro consente il multitargeting di ResolveComReferences.
FilesWritten Parametro di output ITaskItem[] facoltativo.

Contiene i nomi di tutti i file scritti nel disco, incluso, se presente, il file di cache. Questo parametro è particolarmente utile per le implementazioni di Clean.
MinimalRebuildFromTracking Parametro Boolean facoltativo.

Ottiene o imposta un'opzione che specifica se verrà usata la compilazione incrementale tracciata. Se true, viene attivata la compilazione incrementale. In caso contrario, verrà forzata una ricompilazione.
NeverLockTypeAssemblies Parametro Boolean facoltativo.

Ottiene o imposta un valore booleano che specifica se creare un nuovo oggetto AppDomain per valutare i file di risorse (resx) (true) o se creare un nuovo oggetto AppDomain solo quando i file di risorse fanno riferimento a un assembly dell'utente (false).
OutputResources Parametro di output ITaskItem[] facoltativo.

Specifica il nome dei file generati, ad esempio .resources i file. Se non si specifica un nome, viene usato il nome del file di input corrispondente e il .resources file creato viene inserito nella directory che contiene il file di input.
PublicClass Parametro Boolean facoltativo.

Se true, crea una classe di risorse fortemente tipizzata come classe pubblica.
References Parametro String[] facoltativo.

Riferimenti per caricare i tipi nei .resx file da. .resx gli elementi di dati di file possono avere un tipo .NET. Quando il file resx viene letto, questo tipo deve essere risolto. In genere, è possibile risolverlo correttamente usando le regole di caricamento dei tipi standard. Hanno la precedenza eventuali assembly specificati in References.

Questo parametro non è obbligatorio per le risorse fortemente tipate.
SdkToolsPath Parametro String facoltativo.

Specifica il percorso degli strumenti SDK, ad esempio resgen.exe.
Sources Parametro ITaskItem[] obbligatorio.

Specifica gli elementi da convertire. Gli elementi passati a questo parametro devono avere una delle estensioni di file seguenti:

- .txt: specifica l'estensione di un file di testo da convertire. I file di testo possono contenere solo risorse di tipo stringa.
- RESX: specifica l'estensione di un file di risorse basato su XML da convertire.
- RESTEXT: specifica lo stesso formato di TXT. Questa diversa estensione consente di distinguere chiaramente i file di origine che contengono risorse dagli altri file di origine nel processo di compilazione.
- RESOURCES: specifica l'estensione di un file di risorse da convertire.
StateFile Parametro ITaskItem facoltativo.

Specifica il percorso di un file di cache facoltativo usato per accelerare il controllo delle dipendenze dei collegamenti nei file di input RESX.
StronglyTypedClassName Parametro String facoltativo.

Specifica il nome della classe per la classe di risorse fortemente tipizzata. Se questo parametro non è specificato, viene usato il nome base del file di risorse.
StronglyTypedFilename Parametro ITaskItem facoltativo.

Specifica il nome del file di origine. Se questo parametro non è specificato, viene usato il nome della classe come nome base e l'estensione viene determinata dal linguaggio. Ad esempio: MyClass.cs.
StronglyTypedLanguage Parametro String facoltativo.

Specifica il linguaggio da usare durante la generazione dell'origine della classe per la risorsa fortemente tipizzata. Questo parametro deve corrispondere esattamente a uno dei linguaggi usati da CodeDomProvider. Ad esempio, VB o C#.

Passando un valore a questo parametro, si indica all'attività di generare risorse fortemente tipate.
StronglyTypedManifestPrefix Parametro String facoltativo.

Specifica lo spazio dei nomi delle risorse o il prefisso del manifesto da usare nell'origine della classe generata per la risorsa fortemente tipizzata.
StronglyTypedNamespace Parametro String facoltativo.

Specifica lo spazio dei nomi da usare per l'origine della classe generata per la risorsa fortemente tipizzata. Se questo parametro non viene specificato, tutte le risorse fortemente tipate si trovano nello spazio dei nomi globale.
TLogReadFiles Parametro di sola lettura ITaskItem[] facoltativo.

Ottiene una matrice di elementi che rappresentano i log di rilevamento delle operazioni di lettura.
TLogWriteFiles Parametro di sola lettura ITaskItem[] facoltativo.

Ottiene una matrice di elementi che rappresentano i log di rilevamento delle operazioni di scrittura.
ToolArchitecture Parametro System.String facoltativo.

Consente di determinare se per la generazione di ResGen.exe è necessario o meno usare Tracker.exe.

Deve essere analizzabile rispetto a un membro dell'enumerazione ExecutableType. Se String.Empty, viene usata un'euristica per determinare un'architettura predefinita. Deve essere analizzabile rispetto a un membro dell'enumerazione Microsoft.Build.Utilities.ExecutableType.
TrackerFrameworkPath Parametro String facoltativo.

Specifica il percorso della posizione appropriata di .NET Framework in cui è contenuto il file FileTracker.dll.

Se questo parametro è impostato, l'utente si assume la responsabilità di verificare che il numero di bit del file FileTracker.dll passato corrisponda al numero di bit del file ResGen.exe che intende usare. In caso contrario, la posizione appropriata viene stabilita dall'attività in base alla versione corrente di .NET Framework.
TrackerLogDirectory Parametro String facoltativo.

Specifica la directory intermedia in cui verranno inseriti i log di rilevamento risultanti dall'esecuzione di questa attività.
TrackerSdkPath Parametro String facoltativo.

Specifica il percorso della posizione appropriata di Windows SDK in cui è contenuto il file Tracker.exe.

Se questo parametro è impostato, l'utente si assume la responsabilità di verificare che il numero di bit del file Tracker.exe passato corrisponda al numero di bit del file ResGen.exe che intende usare. In caso contrario, la posizione appropriata viene stabilita dall'attività in base alla versione corrente di Windows SDK.
TrackFileAccess Parametro Boolean facoltativo.

Se true, la directory del file di input viene usata per risolvere i percorsi di file relativi.
UsePreserializedResources Parametro Boolean facoltativo.

Se true, specifica che le risorse non stringa devono essere serializzate usando PreserializedResourceWriter invece di ResourceWriter, che non è supportato in .NET Core o .NET 5 o versione successiva.
UseSourcePath Parametro Boolean facoltativo.

Se true, specifica che è necessario usare la directory del file di input per risolvere i percorsi di file relativi.

Osservazioni:

Poiché .resx i file possono contenere collegamenti ad altri file di risorse, non è sufficiente confrontare semplicemente e .resources i .resx timestamp dei file per verificare se gli output sono aggiornati. L'attività GenerateResource segue invece i collegamenti nei .resx file e controlla anche i timestamp dei file collegati. Ne consegue che, in genere, non è consigliabile usare gli attributi Inputs e Outputs nella destinazione che contiene l'attività GenerateResource. In questo modo, infatti, è possibile che l'attività venga ignorata anziché essere eseguita.

Oltre ai parametri elencati sopra, questa attività eredita i parametri dalla classe TaskExtension, che a sua volta eredita dalla classe Task. Per un elenco di questi parametri aggiuntivi e le rispettive descrizioni, vedere TaskExtension Base Class.

Se si usa MSBuild 4.0 come destinazione di progetti .NET 3.5, è possibile che la compilazione sulle risorse x86 non riesca. Per risolvere questo problema, è possibile compilare la destinazione come assembly AnyCPU.

Il parametro UsePreserializedResources ottiene il relativo valore dalla proprietà $(GenerateResourceUsePreserializedResources) nel normale processo di compilazione .NET. Questa proprietà è impostata su true per impostazione predefinita nei progetti e nei progetti .NET Core che usano .NET 5 o versione successiva. È possibile impostare $(GenerateResourceUsePreserializedResources) su true per consentire a .NET SDK di compilare progetti destinati a .NET Framework 4.6.1 o versione successiva che usano risorse non stringa. L'assembly System.Resources.Extensions deve essere disponibile in fase di esecuzione. È disponibile in .NET Core 3.0 e versioni successive e .NET 5 e versioni successive e può essere usato in .NET Framework 4.6.1 o versione successiva tramite PackageReference.|

Esempio

Nell'esempio seguente viene utilizzata l'attività GenerateResource per generare .resources file dai file specificati dalla Resx raccolta di elementi.

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

L'attività GenerateResource usa i <LogicalName> metadati di un <EmbeddedResource> elemento per denominare la risorsa incorporata in un assembly.

Supponendo che l'assembly sia denominato myAssembly, il codice seguente genera una risorsa incorporata denominata someQualifier.someResource.resources:

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

Senza i <LogicalName> metadati, la risorsa sarà denominata myAssembly.myResource.resources. Questo esempio si applica solo a Visual Basic e al processo di compilazione di Visual C#.

Vedi anche