Attività GenerateResource
Converte i file txt e resx (formato di risorsa basato su XML) in file resources binari di Common Language Runtime che è possibile incorporare in un eseguibile binario di runtime o compilare in assembly satellite. Questa attività viene in genere utilizzata per convertire file txt o resx in file resources. Dal punto di vista funzionale, l'attività GenerateResource è simile a resgen.exe.
Parametri
Nella tabella riportata di seguito sono 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 i file di progetto e di destinazioni in modo che se vengono aggiornati, tutte le risorse vengono rigenerate. |
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 di tale blocco). |
ExcludedInputPaths |
Parametro ITaskItem[] facoltativo. Specifica una matrice di elementi tramite i quali vengono indicati i percorsi dai quali gli input tracciati saranno ignorati durante la verifica dell'aggiornamento. |
ExecuteAsTool |
Parametro Boolean facoltativo. Se true, tlbimp.exe e aximp.exe vengono eseguiti 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 su disco, incluso, se presente, il file di cache. 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 tracciata. Se true, viene abilitata la compilazione incrementale. In caso contrario, verrà forzata una ricompilazione. |
NeverLockTypeAssemblies |
Parametro Boolean facoltativo. Specifica il nome dei file generati, ad esempio i file resources. Se non si specifica un nome, viene utilizzato il nome del file di input corrispondente e il file resources creato viene inserito nella directory contenente il file di input. |
OutputResources |
Parametro di output ITaskItem[] facoltativo. Specifica il nome dei file generati, ad esempio i file resources. Se non si specifica un nome, viene utilizzato il nome del file di input corrispondente e il file resources creato viene inserito nella directory contenente il file di input. |
PublicClass |
Parametro Boolean facoltativo. Se il parametro è impostato su true, crea una classe di risorse fortemente tipizzata come classe pubblica. |
References |
Parametro String[] facoltativo. Specifica i riferimenti per il caricamento dei tipi nei file resx. Gli elementi dei dati di questo tipo di file possono essere di tipo .NET. Quando il file resx viene letto, deve essere risolto. In genere, è possibile risolverlo correttamente utilizzando le regole di caricamento dei tipi standard. Se in References vengono forniti assembly, questi avranno la precedenza. Questo parametro non è obbligatorio per le risorse fortemente tipizzate. |
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 seguenti estensioni di file:
|
StateFile |
Parametro ITaskItem facoltativo. Specifica il percorso di un file di cache facoltativo utilizzato per rendere più rapido il controllo delle dipendenze dei collegamenti nei file di input resx. |
StronglyTypedClassName |
Parametro String facoltativo. Specifica il nome della classe di risorse fortemente tipizzata. Se questo parametro non è specificato, viene utilizzato il nome base del file di risorse. |
StronglyTypedFilename |
Parametro ITaskItem facoltativo. Specifica il nome del file di origine. Se questo parametro non è specificato, il nome della classe viene utilizzato come nome base e l'estensione viene determinata dal linguaggio. Ad esempio: MyClass.cs. |
StronglyTypedLanguage |
Parametro String facoltativo. Specifica il linguaggio da utilizzare per la generazione dell'origine della classe per la risorsa fortemente tipizzata. Questo parametro deve corrispondere esattamente a uno dei linguaggi utilizzati da CodeDomProvider, Ad esempio, VB o C#. Il passaggio di un valore a questo parametro determina la generazione di risorse fortemente tipizzate. |
StronglyTypedManifestPrefix |
Parametro String facoltativo. Specifica lo spazio dei nomi delle risorse o il prefisso del manifesto da utilizzare nell'origine della classe generata per la risorsa fortemente tipizzata. |
StronglyTypedNamespace |
Parametro String facoltativo. Specifica lo spazio dei nomi da utilizzare per l'origine della classe generata per la risorsa fortemente tipizzata. Se questo parametro non è specificato, tutte le risorse fortemente tipizzate sono incluse 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 [String] facoltativo. Utilizzato per determinare se per generare ResGen.exe è necessario utilizzare Tracker.exe. Deve essere analizzabile rispetto a un membro dell'enumerazione ExecutableType. Se String.Empty, viene utilizzata 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 di .NET Framework appropriata contenente il file FileTracker.dll. Se impostato, l'utente si assume la responsabilità di assicurarsi che il numero di bit del FileTracker.dll passato corrisponda al numero di bit del file ResGen.exe che si intende utilizzare. Se non è impostato, tramite l'attività viene deciso il percorso adatto in base alla versione di .NET Framework corrente. |
TrackerLogDirectory |
Parametro [String] facoltativo. Specifica la directory intermedia nella quale saranno inseriti i log di rilevamento generati dall'esecuzione di questa attività. |
TrackerSdkPath |
Parametro [String] facoltativo. Specifica il percorso della posizione di Windows SDK appropriata contenente il file Tracker.exe. Se impostato, l'utente si assume la responsabilità di assicurarsi che il numero di bit del file Tracker.exe passato corrisponda al numero di bit del file ResGen.exe che si intende utilizzare. Se non è impostato, tramite l'attività viene deciso il percorso adatto in base alla versione corrente di Windows SDK. |
TrackFileAccess |
Parametro [Boolean] facoltativo. Se true, la directory del file di input viene utilizzata per risolvere i percorsi di file relativi. |
UseSourcePath |
Parametro Boolean facoltativo. Se il parametro è impostato su true, specifica che è necessario utilizzare la directory del file di input per risolvere i percorsi di file relativi. |
Note
Poiché i file resx possono contenere collegamenti ad altri file di risorse, non è sufficiente confrontare i timestamp dei file resx e resources per verificare se gli output sono aggiornati. Al contrario, l'attività GenerateResource segue i collegamenti nei file resx e controlla al tempo stesso i timestamp dei file collegati. Questo significa che in genere gli attributi Inputs e Outputs non devono essere utilizzati sulla destinazione che contiene l'attività GenerateResource. In tal modo, infatti, l'attività potrebbe essere ignorata quando invece dovrebbe essere eseguita.
Oltre ai parametri sopra elencati, questa attività eredita i parametri dalla classe TaskExtension, che eredita dalla classe Task. Per un elenco di tali parametri aggiuntivi e le relative descrizioni, vedere Classe di base TaskExtension.
Se si utilizza MSBuild 4.0 come destinazione per progetti .NET 3.5, è possibile che la compilazione sulle risorse x86 non riesca. Per risolvere questo problema, è possibile compilare la destinazione come assembly AnyCPU.
Esempio
Nell'esempio riportato di seguito l'attività GenerateResource viene utilizzata 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 utilizza i <LogicalName> metadati di un <EmbeddedResource> elemento per assegnare un nome alla risorsa incorporata in un assembly.
Supponendo che l'assembly si chiami myAssembly, il codice seguente genera una risorsa incorporata con il nome unqualificatore.unarisorsa.risorse:
<ItemGroup> <EmbeddedResource Include="myResource.resx"> <LogicalName>someQualifier.someResource.resources</LogicalName> </EmbeddedResource></ItemGroup>
Senza i metadati <LogicalName>, la risorsa sarebbe denominata myAssembly.myResource.resources. Questo esempio si applica solo a Visual Basic e al processo di compilazione di Visual C#.