Pacchetto di installazione applicazione e file .resx

mercoledì 26 settembre 2007 - 08.21

Marco_Vecchi Profilo | Newbie

B Giorno a tutti;Ho creato un'applicazione in Vb.net che contiene un file .resx dove c sono delle stringhe che contengono il nome delle colonne dei miei datagridview.Al caricamento dei form nascondo le colonne dei miei datagridview in funzione di quello che c'è scritto nel file resx;quando vado a creare il pacchetto di installazione però il file .resx non viene immesso nella cartella dell'applicazione e quindi io non posso configurare le colonne da visualizzare.Qualcuno può aiutarmi?Grazie.

Brainkiller Profilo | Guru

>B Giorno a tutti;Ho creato un'applicazione in Vb.net che contiene
>un file .resx dove c sono delle stringhe che contengono il nome
>delle colonne dei miei datagridview.Al caricamento dei form nascondo
>le colonne dei miei datagridview in funzione di quello che c'è
>scritto nel file resx;quando vado a creare il pacchetto di installazione
>però il file .resx non viene immesso nella cartella dell'applicazione
>e quindi io non posso configurare le colonne da visualizzare.Qualcuno
>può aiutarmi?Grazie.

Aggiungilo !
In genere nel progetto del Setup puoi andare ad aggiungere file aggiuntivi e specificare la cartella in cui verranno copiati. Di solito si usa"Application Folder" che si riferisce appunto alla cartella in cui sarà installata l'applicazione.
Ciao


David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Marco_Vecchi Profilo | Newbie

L'ho Fatto...ma poi ho provato ad andare a modificare il file .resx e il Software non ha tenuto conto della modifica;come se il file da cui legge le informazioni non fosse veramente quello.Grazie...

Brainkiller Profilo | Guru

>L'ho Fatto...ma poi ho provato ad andare a modificare il file
>.resx e il Software non ha tenuto conto della modifica;come se
>il file da cui legge le informazioni non fosse veramente quello.Grazie...

Allora è probabile che il file .resx sia incluso dentro l'eseguibile.
Clicca con il sinistro sul file di risorse e guarda nella finestra proprietà sotto "Build Action" se c'è scritto "Embedded Resource" significa che questo file di risorse verrà incluso dentro l'.exe. Prova a modificare l'impostazione di "Build Action" in modo che il file resti esterno così lo puoi modificare successivamente.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Marco_Vecchi Profilo | Newbie

Prima d tutto Grazie mille x lo sbattimento;penso ke la tua intuizione sia esatta...c avevo anke provato,il problema è ke quando cambio questa opzione il debug mi da un sacco d errori sul file .resx e non posso generare...

Brainkiller Profilo | Guru

>Prima d tutto Grazie mille x lo sbattimento;penso ke la tua intuizione
>sia esatta...c avevo anke provato,il problema è ke quando cambio
>questa opzione il debug mi da un sacco d errori sul file .resx
>e non posso generare...

Ho fatto un po' di test anche io.
Da quello che ho capito nella tua richiesta tu vorresti avere il file .resx esterno e poter modificare le etichette dell'applicazione vero ? Un tempo avevo fatto anche io una cosa del genere ma diversamente. Infatti creavo degli assembly esterni contenenti i file di risorse localizzati. Le risorse dell'assembly poi vengono caricate da dentro l'applicazione. Se devi cambiare le etichette devi ricompilare la DLL esterna e deployarla. In genere si usa una DLL per ogni lingua. Tu usi l'italiano quindi avrai una sola DLL.

Ti consiglio di leggere articoli tipo questo:
http://msdn.microsoft.com/msdnmag/issues/02/06/Internat/
dove parlando di Satellite Assemblies.
Prova anche qui:
http://msdn2.microsoft.com/en-us/library/70s77c20.aspx

Io seguirei questo approccio.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Marco_Vecchi Profilo | Newbie

In realtà la questione è diversa...Io non devo cambiare le etichette,quello lo faccio già nel modo in cui operi tu (anche io sto creando un'applicazione multilanguage). Devo nascondere l'intera colonna: se il nome della colonna non compare nel file .resx la metto a Visible = false...

Marco_Vecchi Profilo | Newbie

Ho Capito il concetto;è la strada giusta;Come faccio a recuperare le risorse del file .resx Nell'assembly?

Brainkiller Profilo | Guru

>Ho Capito il concetto;è la strada giusta;Come faccio a recuperare
>le risorse del file .resx Nell'assembly?

C'è scritto nel secondo link che ti ho indicato.

private ResourceManager rm; rm = new ResourceManager("MyImages", this.GetType().Assembly); PictureBox.Image = (System.Drawing.Image)rm.GetObject("MyObject");

Quando istanzi ResourceManager invece di passare this.GetType().Assembly dovrai caricare l'assembly esterno così:

Assembly.LoadFrom(path_all_assembly)

E poi con i vari metodi GetString, GetObject ecc. recupeare la risorsa desiderata.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Marco_Vecchi Profilo | Newbie

L'ho recuperato inmmodo diverso...con una funzione...cmq funziona;il brutto che devo ricompilare ogni volta la dll...volevo qualcosa d + immediato,però la soluzione verso la quale mi hai condotto è soddisfacente...GRAZIE MILLE!!!

Brainkiller Profilo | Guru

>L'ho recuperato inmmodo diverso...con una funzione...cmq funziona;il
>brutto che devo ricompilare ogni volta la dll...volevo qualcosa
>d + immediato,però la soluzione verso la quale mi hai condotto
>è soddisfacente...GRAZIE MILLE!!!

E' vero. Per ricompilare la DLL essendo un tipo di progetto semplice puoi anche crearti dei .bat che ti fanno il lavoro in automatico senza dover aprire VS.NET tutte le volte, ecc.

Però tutto sommato è meglio perchè se la tua applicazione va in mano ad altri potrebbero loro stessi modificare liberamente il file di risorse. Forse è meglio che sia così.

Ciao


David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5