Condividi tramite


Attività GenerateResource

Converte tra file .txt e .resx (formato di risorse basate su XML) e file binari di Common Language Runtime .resources che possono essere incorporati in un eseguibile binario di runtime o compilati in assembly satellite. Questa attività viene in genere usata per convertire .txt o .resx file in file .resources. L'attività GenerateResource è funzionalmente simile a resgen.exe.

Cautela

Le risorse nei file .resx possono essere serializzate usando BinaryFormatter, che non è sicuro. Includere solo i file .resx nel processo di compilazione attendibile.

Parametri

Nella tabella seguente 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, i file di progetto e di destinazione devono essere in genere input, in modo che, se aggiornati, tutte le risorse vengano rigenerate.
EnvironmentVariables Parametro String[] facoltativo.

Specifica una matrice di coppie nome-valore di variabili di ambiente che devono essere passate al resgen.exegenerato, oltre al blocco di ambiente regolare (o sottoposto a override selettivo).
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 tlbimp.exe e aximp.exe dal framework di destinazione appropriato out-of-proc per generare gli assembly wrapper necessari. Questo parametro consente il multitargeting di ResolveComReferences.
FilesWritten Facoltativo ITaskItem[] parametro di output.

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

Ottiene o imposta un'opzione che specifica se verrà utilizzata la compilazione incrementale rilevata. Se true, la compilazione incrementale è attivata; in caso contrario, verrà forzata una ricompilazione.
NeverLockTypeAssemblies Parametro Boolean facoltativo.

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

Specifica il nome dei file generati, ad esempio .resources file. Se non si specifica un nome, viene usato il nome del file di input corrispondente e il file .resources 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 al caricamento dei tipi nei file .resx da. .resx elementi di dati di file possono avere un tipo .NET. Quando il file .resx viene letto, questo tipo deve essere risolto. In genere, viene risolto correttamente usando regole di caricamento dei tipi standard. Se si specificano assembly in References, hanno la precedenza.

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 per un file di testo da convertire. I file di testo possono contenere solo risorse stringa.
- .resx: specifica l'estensione per un file di risorse basato su XML da convertire.
- .restext: specifica lo stesso formato di .txt. Questa estensione diversa è utile se si desidera distinguere chiaramente i file di origine che contengono risorse da altri file di origine nel processo di compilazione.
- .resources: specifica l'estensione per un file di risorse da convertire.
StateFile Parametro ITaskItem facoltativo.

Specifica il percorso di un file di cache facoltativo usato per velocizzare 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 viene specificato, viene usato il nome di base del file di risorse.
StronglyTypedFilename Parametro ITaskItem facoltativo.

Specifica il nome file per il file di origine. Se questo parametro non viene specificato, il nome della classe viene usato come nome file di base, con l'estensione dipendente 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 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 Facoltativo ITaskItem[] parametro di sola lettura.

Ottiene una matrice di elementi che rappresentano i log di rilevamento di lettura.
TLogWriteFiles Facoltativo ITaskItem[] parametro di sola lettura.

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

Utilizzato per determinare se è necessario utilizzare o meno Tracker.exe per generare ResGen.exe.

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

Specifica il percorso di .NET Framework appropriato che contiene FileTracker.dll.

Se impostato, l'utente si assume la responsabilità di assicurarsi che il bit del FileTracker.dll che passa corrisponda al bit del ResGen.exe che intende usare. Se non è impostata, l'attività decide la posizione appropriata in base alla versione corrente di .NET Framework.
TrackerLogDirectory Parametro String facoltativo.

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

Specifica il percorso del percorso appropriato di Windows SDK che contiene Tracker.exe.

Se impostato, l'utente si assume la responsabilità di assicurarsi che il bit del Tracker.exe che passa corrisponda al bit del ResGen.exe che intende usare. Se non è impostata, l'attività decide la posizione appropriata in base all'SDK di Windows corrente.
TrackFileAccess Parametro Boolean facoltativo.

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

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

Se true, specifica che la directory del file di input deve essere usata per la risoluzione dei percorsi di file relativi.

Osservazioni

Poiché .resx file possono contenere collegamenti ad altri file di risorse, non è sufficiente confrontare semplicemente .resx e .resources timestamp dei file per verificare se gli output sono aggiornati. L'attività GenerateResource segue invece i collegamenti nei file .resx e controlla anche i timestamp dei file collegati. Ciò significa che in genere non è consigliabile usare gli attributi Inputs e Outputs nella destinazione contenente l'attività GenerateResource, in quanto ciò potrebbe causare la mancata esecuzione quando dovrebbe effettivamente essere eseguito.

Oltre ai parametri elencati in precedenza, questa attività eredita i parametri dalla classe TaskExtension, che eredita dalla classe Task. Per un elenco di questi parametri aggiuntivi e delle relative descrizioni, vedere classe di base TaskExtension.

Quando si usa MSBuild 4.0 per i progetti .NET 3.5 di destinazione, la compilazione potrebbe non riuscire nelle risorse x86. Per risolvere questo problema, è possibile compilare la destinazione come assembly AnyCPU.

Il parametro UsePreserializedResources ottiene il 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 versioni successive 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 file .resources dai file specificati dalla raccolta di elementi Resx.

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

L'attività GenerateResource usa i metadati <LogicalName> di un elemento <EmbeddedResource> 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>
        <WithCulture>false</WithCulture>
    </EmbeddedResource>
</ItemGroup>

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

Vedere anche