Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-12-2008, 21:08   #1
xplorer87
Senior Member
 
L'Avatar di xplorer87
 
Iscritto dal: Feb 2002
Messaggi: 392
[C#]Serializzazione e errore:"Impossibile trovare l'assembly <nome del mio assembly>"

Ciao ragazzi ^^

provo a spiegarvi il mio problema: ho un'applicazione con due finestre, ognuna delle quali ha un bottone, rispettivamente salva e apri. quella con salva serializza un oggetto su file, quella con apri lo deserializza; il tutto avviene tramite l'uso dei form OpenFileDialog e SaveFileDialog. Durante la serializzazione non ho particolari problemi: il file viene serializzato correttamente. Durante la deserializzazione però, viene lanciata la SerializationException con il messaggio "Impossibile trovare l'assembly <nome del mio assembly>".

codice della serializzazione:
Codice:
                //Crea l'oggetto ResultsToSerialize
                MioOggetto resultsToSerialize;
                // istanzio l'oggetto

                IFormatter binaryFormatter = new BinaryFormatter();
                Stream fileStream = new FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.Write, FileShare.None);
                binaryFormatter.Serialize(fileStream, resultsToSerialize);

                fileStream.Close();
la deserializzazione viene effettuata in questa maniera:

Codice:
                MioOggetto resultsToSerialize;               
                IFormatter binaryFormatter = new BinaryFormatter();
               
                Stream fileStream = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read, FileShare.None);
                MessageBox.Show("filestream creato");
                try
                {
                    resultsToSerialize = (MioOggetto)(binaryFormatter.Deserialize(fileStream));             
                }
                catch (SerializationException se)
                {
                    MessageBox.Show("SE: " + se.Message);
                }
                finally
                {
                    fileStream.Close();
                }
ho provato a cercare un po' in internet e si dice un po' tutto e il contrario di tutto; qualcuno diceva che era un problema del framework .NET 1.5 (ma io ho il 3.5), altri che era un problema del binaryFormatter che inserisce in ogni file serializzato una stringa univoca (??) che rende impossibile la deserializzazione in ogni altra istanza di classe che non sia quella che ha serializzato l'oggetto, altri ancora che l'errore dell'assembly non trovato era dovuto al fatto che si provava a serializzare/deserializzare in due applicazioni diverse (non mi sembra il mio caso, in quanto ad essere diverse sono solo le finestre).

qualcuno ha idea di cosa possa essere?
grazie a tutti
__________________
lol wut
xplorer87 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2008, 07:05   #2
xplorer87
Senior Member
 
L'Avatar di xplorer87
 
Iscritto dal: Feb 2002
Messaggi: 392
vi aggiorno un po' con qualche novità: usando come consigliatomi il visualizzatore log associazioni assembly (fuslogvw.exe) sono riuscito a capire (fforse) qual è la causa dell'errore, cioè la tentata
associazione di un'assembly che è già associato al programma. Ecco il
log del file incriminato:

*** Voce di registro binder di assembly (19/12/2008 @ 7.41.52) ***

Operazione non riuscita.
Risultato associazione: hr = 0x80070002. Impossibile trovare il file
specificato.

Gestore assembly caricato da: C:\WINDOWS\Microsoft.NET\Framework
\v2.0.50727\mscorwks.dll
In esecuzione con l'eseguibile C:\Programmi\Sparx Systems\EA\EA.exe
--- Segue registro dettagliato degli errori.

=== Informazioni sullo stato di preassociazione ===
REG: Utente = OMICRON\User
REG: DisplayName = PLDecisionSupport, Version=1.0.3274.41871,
Culture=neutral, PublicKeyToken=null
(Fully-specified)
REG: Appbase = file:///C:/Programmi/Sparx Systems/EA/
REG: PrivatePath iniziale = NULL
REG: base dinamica = NULL
REG: base della cache = NULL
REG: AppName = NULL
Assembly chiamante: (Unknown).
===
REG: l'associazione ha origine nel contesto di caricamento di default.
REG: impossibile trovare un file di configurazione dell'applicazione.
REG: utilizzo del file di configurazione computer da C:\WINDOWS
\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
REG: criterio attualmente non applicato al riferimento (associazione
di assembly privati, personalizzati, parziali o basati su percorsi).
REG: la stessa associazione è stata rilevata precedentemente. Errore
hr = 0x80070002.
ERR: errore irreversibile durante la verifica pre-download (hr =
0x80070002).

Come mi è sembrato di capire (e come verificato da me a runtime), le
ultime due righe sono la causa del throw della SerializationException.
Non capisco però cosa voglia dire che "la stessa associazione è stata
rilevata precedentemente", visto che io sto semplicemente tentando di
deserializzare un file senza affatto curarmi degli assembly.
__________________
lol wut
xplorer87 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2008, 13:18   #3
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Non so se possa fare al caso tuo, ma io quando serializzo uso questo metodo, e non ho nessuno dei problemi che hai citato :

Esempio con una classe semplice semplice :

Codice:
    public class Persona
    {
        public string Nome;
        public string Cognome;
    }
-> Serializzo :

Codice:
            Persona P = new Persona();
            P.Nome = "mioNome";
            P.Cognome = "mioCognome";
            System.Xml.Serialization.XmlSerializer X = new System.Xml.Serialization.XmlSerializer(P.GetType());
            System.IO.TextWriter TW = new System.IO.StreamWriter("C:\\" + P.Nome + P.Cognome + ".xml");
            X.Serialize(TW, P);
            TW.Close();
-> DeSerializzo :

Codice:
            System.Xml.Serialization.XmlSerializer X = new System.Xml.Serialization.XmlSerializer(typeof(Persona));
            System.IO.TextReader TR = new System.IO.StreamReader("C:\\mioNomemioCognome.xml");
            Persona P = (Persona)X.Deserialize(TR);
            TR.Close();
            MessageBox.Show(P.Nome + " " + P.Cognome);
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2008, 17:33   #4
xplorer87
Senior Member
 
L'Avatar di xplorer87
 
Iscritto dal: Feb 2002
Messaggi: 392
ciao, usando l'xmlserializer non riesco a serializzare in quanto ho l'errore "impossibile generare il documento xml"... nello specifico, analizzando la innerexception, ho un errore dovuto alla presenza di un "riferimento circolare" di una classe quando vado a serializzare il mio oggetto. Leggendo in giro questo è un limite dell'XmlSerializer (cioè il fatto di non riuscire a serializzare oggetti con riferimenti circolari, cioè A punta a B e B punta ad A), mentre con il BinaryFormatter si riesce a serializzare senza problemi anche in presenza di situazioni di questo tipo. Grazie comunque per il tuo aiuto
__________________
lol wut

Ultima modifica di xplorer87 : 19-12-2008 alle 17:37.
xplorer87 è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2008, 21:37   #5
xplorer87
Senior Member
 
L'Avatar di xplorer87
 
Iscritto dal: Feb 2002
Messaggi: 392
dopo numerose ricerche ho trovato la soluzione. strano a dirsi, ma si tratta addirittura di un bug nel .NET framework, ancora non fixato nella versione 3.5 (fonte: http://beta.microsoft.com/VisualStud...dbackID=119402)


qui invece c'è il workaround (poche linee di codice) suggerito da un utente:

http://www.eggheadcafe.com/software/...es-except.aspx
__________________
lol wut
xplorer87 è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2008, 08:28   #6
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Ah, ok. Beh, col BinaryFormatter non è poi molto diverso :

Codice:
    [Serializable()]
    public class Persona
    {
        public string Nome;
        public string Cognome;
    }
-> Serializzo :
Codice:
            Persona P = new Persona();
            P.Nome = "mioNome";
            P.Cognome = "mioCognome";
            BinaryFormatter BF = new BinaryFormatter();
            System.IO.FileStream FS = new System.IO.FileStream("C:\\" + P.Nome + P.Cognome + ".txt", System.IO.FileMode.Create);
            BF.Serialize(FS, P);
            FS.Close();
-> DeSerializzo :
Codice:
            Persona P;
            BinaryFormatter BF = new BinaryFormatter();
            System.IO.FileStream FS = new System.IO.FileStream("C:\\mioNomemioCognome.txt",System.IO.FileMode.Open);
            P = (Persona)BF.Deserialize(FS);
            FS.Close();
            MessageBox.Show(P.Nome + " " + P.Cognome);
Comunque, riguardo a quel presunto bug, hai già provato il Service Pack 1 del FW3.5 ( o meglio, il SP1 di VS2008 ) ? Mi pare strano non abbiano fixato un problema come questo...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2008, 17:55   #7
xplorer87
Senior Member
 
L'Avatar di xplorer87
 
Iscritto dal: Feb 2002
Messaggi: 392
beh, il tuo codice con il BinaryFormatter è identico al mio, e facendo così avevo il problema sull'assembly.

in effetti non avevo installato il sp1 di visual studio 2008 (ma solo il sp1 del .NET Framework 3.5), in ogni caso ho appena provato e con il sp1 di vs2008 il problema si presenta lo stesso se non uso il ResolveEventHandler come spiegato nel workaround.
__________________
lol wut

Ultima modifica di xplorer87 : 20-12-2008 alle 17:57.
xplorer87 è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2010, 17:37   #8
LacioDromBuonViaggio
Senior Member
 
L'Avatar di LacioDromBuonViaggio
 
Iscritto dal: Jul 2008
Città: Sardegna
Messaggi: 1005
Quote:
Originariamente inviato da xplorer87 Guarda i messaggi
un problema del binaryFormatter che inserisce in ogni file serializzato una stringa univoca
Chiedo scusa se riesumo un post di qualche anno fa, ma ho un problema simile.
La serializzazione e la de-serializzazione funzionano alla grande nel progetto che chiamerò Progetto1.
Se io mi creo un Progetto2 e provo a deserializzare il file (serializzato precedentemente con Progetto1) mi lancia un'eccezione dicendomi che non ha trovato l'assembly di Progetto1.

{Se apro il file serializzato con Notepad trovo all'inizio la stringa univoca di cui si parla nel quote un riferimento a "Progetto1"}

Quindi vorrei rendere de-serializzabile quel file indipendentemente dal progetto che sto utilizzando, magari utilizzando un assembly 'universale' che carico prima di deserializzare.

E' possibile fare ciò?
__________________
Aeroengine II BBA Black | Asus P5N-T Deluxe 780i | Intel E8400 C0 @4,050Ghz 1,35v + TR Ultra-120 eXtreme | Corsair 2x2GB PC6400 XMS2 DHX @900Mhz 2,15v | XFX 8800 GT 512MB @730/990 + TR HR-03 Rev. A | Tagan TG500-BZ | Zalman ZM-MFC2 Fan Control | WD Raptor 10000rpm 150 GB + 1,5TB | Iiyama ProLite E2607WSV

Ultima modifica di LacioDromBuonViaggio : 04-06-2010 alle 17:40.
LacioDromBuonViaggio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
SpaceX mostra nuove immagini del lancio ...
Cina: CAS Space e Guangzhou Laboratory e...
Nikon Comedy Wildlife Awards 2026: le fo...
Samsung Galaxy A57 e A37 costano di più ...
Windows 11 26H2 taglia il consumo di RAM...
KINGPIN è tornato! Il re dell'ove...
CPU usata, ban ereditato: il caso del Ry...
Spunta un engineering sample di Ryzen 9 ...
iPhone 18 Pro, alcuni utenti segnalano s...
Android Auto: Gemini ascolta la domanda ...
OpenAI avvisa oltre 100 organizzazioni p...
Dall'AI alla SI: il rebranding di Trump ...
0patch offrirà supporto esteso pe...
Sudo sembra un iPod, ma nasconde una car...
Meta, OpenAI e Google rifanno OpenClaw: ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:59.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v