Domanda

Il tipo 'x' è definito in un assembly a cui non si fa riferimento. È necessario aggiungere un riferimento all'assembly 'abc123'.

Ho un'applicazione Web .NET 2.0 che fa riferimento al mio assembly "abc123". L'assembly esiste nel GAC e ho verificato che si tratta della versione corretta (stessa). Il resto dell'applicazione non ha problemi, tranne per una pagina aspx. La pagina in questione ha un ripetitore che mostra un controllo utente come uno dei suoi "campi". Dopo aver associato un elenco di tipo y al ripetitore, passo all'utente il controllo di un elenco di tipo x (una proprietà di y) come mostrato qui:

<uc1:usercontrol id="ucusercontrol " runat="server" myPublicUserControlProperty='<%#Eval("CollectionOfX") %>'/>

Sul set di proprietà del controllo utente, associo l'elenco di tipo x a una vista griglia nel controllo utente.

Una cosa strana da notare è che questo report funziona bene sul mio pc di sviluppo ma non su alcun server una volta distribuito. Il mio pc è Windows XP, IIS6, VS2005. I server sono Windows Server 2003, IIS6.

Spero di averlo spiegato abbastanza bene. Grazie in anticipo per qualsiasi approfondimento che puoi fornire.

È stato utile?

Soluzione

Sono il collega di Mike e abbiamo trovato una soluzione.

Il tipo X è definito nel suo assembly, ovvero solo nel GAC. Anche se la sua applicazione Web ASP.NET aveva un riferimento, non riusciva a caricarsi dal GAC solo per questo UserControl. Il resto dell'applicazione ha funzionato come previsto. Abbiamo confermato il caricamento non riuscito inserendo una copia dell'assembly nella directory bin e tutto ha funzionato. Abbiamo rimosso l'assemblaggio e il problema è tornato.

La nostra soluzione era quella di aggiungere manualmente una voce a web.config nella sezione assembly per indicare ASP.NET al GAC.

Sembra che ogni volta che fai riferimento a un tipo nella pagina (non nel code-behind), hai bisogno delle informazioni sull'assemblaggio definite nel file web.config o in una direttiva di pagina.

<assemblies>
        <add assembly="MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=[MyPublicKeyToken]"/>   
</assemblies>

Altri suggerimenti

C'è anche un bug che può manifestarsi con sintomi simili, descritto qui .

La soluzione alternativa è eliminare tutto nella directory C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ e sembra manifestarsi solo in modalità debug.

Quando si risolvono questi tipi di problemi, il Fusion Log Viewer è sempre stato di grande aiuto.

Ho scoperto che se type x è effettivamente una classe nel tuo App_Code , sporcarlo e ri-salvare spesso costringe l'app Web a ricompilare e risolve il problema.

/ p>

Più spesso, è a causa degli assembly memorizzati nella cache. Un modo per risolvere questo problema è fare il "riferimento forte" nel file proj o config. Consulta questo blog post

Ho avuto lo stesso errore esatto, ma nella mia classe avevo un costruttore pubblico che utilizzava come parametro, un oggetto di un altro progetto.

Ho risolto il problema rendendo interno quel costruttore.

Per me è stato un problema di pull controllo della versione.

In Visual Studio, apri " Riferimenti " in Esplora soluzioni e scorri.

Se qualcosa ha un triangolo giallo, ricorda il nome, rimuovilo e aggiungilo di nuovo (o fallo fare a ReSharper per te).

Mi è successo più volte dopo aver tirato fuori un progetto quando un collega ha aggiunto un nuovo pacchetto e riferimenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top