Per creare gli assiemi sono necessari i seguenti strumenti.
- Resgen.exe
- Al.exe
- ildasm.exe
Al.exe è il programma che incorpora le risorse in un assembly satellite. Ma al.exe accetterà solo risorse in formato binario .resources. Ma i nostri input sono in genere file di risorse di solo testo o file di risorse basati su XML in formato .resx. resgen.exe viene utilizzato per convertire queste forme alternative di risorse nel formato binario .resources palatable in al.exe.
ildasm.exe: se si ricorda che cosa fa l'IDE di Visual Studio, si noterà che esiste una traduzione del nome tra la struttura della directory del file di risorse e il modo in cui tale file di risorse è noto all'interno dell'assieme. Becaue utilizza l'IDE di Visual Studio per generare le risorse predefinite e il processo di estenalizzazione per generare gli assembly satellite, entrambi i meccanismi devono produrre assembly con lo stesso tipo di gerarchia di denominazione per i file di risorse.
Quindi usiamo ildasm per esaminare le DLL generate da Visual Studio IDE per scoprire quale sia la struttura e utilizzare lo stesso meccanismo per generare gli assembly satellite. Puoi anche esaminare gli assembly satellite usando ildasm per assicurarti di avere i nomi giusti. Ciò sarà utile per il debug degli errori dal gestore delle risorse che ti dice che non è in grado di localizzare una risorsa.
Ora che gli strumenti sono delineati, come si converte un file di risorse esterne in un assieme satellite? Come indicato di seguito, questo è un processo a tre (davvero, due) passaggi.
Fase 0: Impostare i percorsi per resgen e Al.exe:
@set path=%path%;
"C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin";
c:\winnt\microsoft.NET\framework\v1.0.3705
Fase 1: Usare resgen per creare un file resources da un file .resx.
Resgen MyText.resx
Il comando precedente creerà un file chiamato:
MyText.resources
Fase 2: Utilizzare Al.exe per creare l'assembly satellite:
Al.exe
/t:lib
/embed:MyText.en-gb.Resources,MyApplication.MyText.en-gb.Resources
/culture:hi-gb
/out:MyApplication.resources.dll
ci sono un paio di cose vale la pena notando qui:
/t:lib: Says you are interested in a .dll.
/embed:MyText.en-gb.Resources,MyApplication.MyText.en-gb.Resources : Embeds and renames the resource to a target name to match the Visual Studio IDE naming structure.
/culture:hi-gb : Identifies the culture in which you are interested.
/out:MyApplication.resources.dll : Name of the DLL in which you are interested.
Il file .dll generato deve avere quella convenzione di denominazione per .NET per trovarlo. Si noti inoltre che è necessario specificare l'impostazione cultura, anche se la cultura è disponibile nel nome dei file di risorse. Quindi deve essere menzionato in entrambi i posti.
Collocare il gruppo satellite nel appropriato Directory Una volta creato l'assembly satellite, fisicamente copiare il dll alla directory seguente:
\MyApplication\bin\en-gb\MyApplication.Resources.DLL
In caso di più file di risorse:
\MyApplication\resources\files\CommonResources.resx
\MyApplication\resources\files\Module1Resources.resx
\MyApplication\resources\files\Module2Resources.resx
E è possibile definire le chiavi per queste risorse in una gerarchia separata, come segue:
\MyApplication\resources\keys\CommonKeys.cs
\MyApplication\resources\keysModule1Keys.cs
\MyApplication\resources\keys\Module2Keys.cs
Per uno script programma batch, si prega di fare riferimento al mio blog http://samithenerd.blogspot.com/2011/12/batch-program-for-creating-satellite.html
Lo controllerò nel tempo libero, hai aumentato i tuoi sforzi per condividere;) –
Inoltre puoi accettare la tua risposta anche se pensi che questo sia ciò che stavi veramente cercando. –