Impossibile convertire il valore di tipo '<nometipo1>' in '<nometipo2>'

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile convertire il valore di tipo '<nometipo1>' in '<nometipo2>'. La mancata corrispondenza del tipo potrebbe essere dovuta alla presenza simultanea di un riferimento al file e di un riferimento di progetto all'assembly '<nomeassembly>'. Provare a sostituire il riferimento di file a '<percorsofile>' del progetto '<nomeprogetto1>' con un riferimento di progetto a '<nomeprogetto2>'.
Value of type '<typename1>' cannot be converted to '<typename2>'. Type mismatch could be due to the mixing of a file reference with a project reference to assembly '<assemblyname>'. Try replacing the file reference to '<filepath>' in project '<projectname1>' with a project reference to '<projectname2>'.

In una situazione in cui in un progetto viene creato un riferimento al progetto e un riferimento al file, il compilatore non sarà in grado di garantire che un tipo possa essere convertito in un altro.

Nello pseudo-codice descritto di seguito viene illustrata una situazione che può generare questo errore.

' ================ Visual Basic project P1 ================

' P1 makes a PROJECT REFERENCE to project P2

' and a FILE REFERENCE to project P3.

Public commonObject As P3.commonClass

commonObject = P2.getCommonClass()

' ================ Visual Basic project P2 ================

' P2 makes a PROJECT REFERENCE to project P3

Public Function getCommonClass() As P3.commonClass

Return New P3.commonClass

End Function

' ================ Visual Basic project P3 ================

Public Class commonClass

End Class

Nel progetto P1 viene creato un riferimento di progetto indiretto dal progetto P2 al progetto P3, oltre a un riferimento di file diretto a P3. La dichiarazione di commonObject utilizza il riferimento di file a P3, mentre la chiamata a P2.getCommonClass utilizza il riferimento di progetto a P3.

Il problema di questa situazione dipende dal fatto che nel riferimento di file vengono specificati un percorso e un nome di file per il file di output di P3 (generalmente p3.dll), mentre nei riferimenti al progetto il progetto di origine (P3) viene identificato in base al nome del progetto. Per questo motivo, il compilatore non sarà in grado di garantire che il tipo P3.commonClass proviene dallo stesso codice di origine tramite i due diversi riferimenti.

Questa situazione si verifica generalmente quando sono presenti riferimenti di progetto e riferimenti di file contemporaneamente. Nell'illustrazione precedente, il problema non si verificherà se P1 farà un riferimento di progetto diretto a P3 anziché un riferimento di file.

ID errore: BC30955

Per correggere l'errore

  • Trasformare un riferimento di file in un riferimento di progetto.

Vedere anche

Attività

Procedura: aggiungere o rimuovere riferimenti in Visual Studio (Visual Basic)

Concetti

Riferimenti dei progetti

Altre risorse

Conversioni di tipi in Visual Basic

Riferimenti a spazi dei nomi e componenti

Gestione dei riferimenti