Oggi è saltata fuori una questione piuttosto interessante: nel caso in cui si utilizzi Visual Studio 2010 targettizzando il Framework 3.5 e si sia obbligati a tergettizzare anche la piattaforma x86, potrebbe saltare fuori un errore di compilazione relativo ai file di risorse RESX delle form.
L’errore è facilmente riproducibile con le seguenti indicazioni:
- Utilizzare ovviamente Visual Studio 2010
- Creare un progetto A che utilizzi il Framework 3.5
- Creare un progetto B di tipo Windows Form e referenziare il progetto A. Anche questo progetto devo utilizzare il Framework 3.5.
- Nella form che viene creata di default aggiungere una imagelist e inserire qualche immagine
- Cambiare la piattaforma di compilazione da Any CPU a X86
- Compilare la soluzione
Fatto tutto ciò non dovreste più essere in grado di compilare. Su Connect esiste un item ben definito con descrizione del problema e soluzioni alternative:
http://connect.microsoft.com/VisualStudio/feedback/details/554759/error-in-control-resx-file-when-adding-imagelist
In particolare una nota sulle soluzioni alternative può dare uno spunto per eventuali fix al problema (uno lo trovate anche in allegato su Connect):
After editing the form search the resx for "j00L" on the first line of the imagelists block and change to "j0yL".
You have to do it everytime you make a change though.
Effettivamente facendo questa semplice modifica tutto torna a compilare correttamente. Il problema è che tale modifica va fatta su ogni form in cui viene inserita una Imagelist.
Il problema descritto non si manifesta con il Framework 4.0 o utilizzando come piattaforma di compilazione Any CPU. Nel nostro caso però non possiamo ne usare il Framework 4.0 ne usare Any CPU a causa di librerie esterne che non vengono più caricate correttamente.
Sfruttando il “trucco” precedente ci siamo fatti un programmino che va a “scandagliare” tutti i file RESX del progetto, verifica se contengono delle imagelist e nel caso va ad applicare il fix precedente.
Richiamando il tutto in fase di Prebuild, si torna a lavorare decentemente direttamente con Visual Studio.
Mi piacerebbe sapere se il recente SP1 Beta di Visual Studio 2010 includa già la correzione a questo problema. Qualcuno ha già verificato?