Domanda

Ricevo uno strano avviso:

Il tipo predefinito "System.Runtime.CompilerServices.ExtensionAttribute" è definito in più assembly nell'alias globale;utilizzando la definizione da 'c:\Program Files eference Assemblies\Microsoft\Framework\v3.5\System.Core.dll'

Non viene fornito alcun numero di riga, quindi è difficile capire di cosa si tratta.

Il codice di errore del compilatore è CS1685

È stato utile?

Soluzione

Si sta utilizzando dll di qualcuno (o il proprio), che ha realizzato questo attributo (con lo stesso nome) se stesso come un mezzo per l'utilizzo di alcune funzioni C # 3.0 in pre .NET 3.5 tempi di esecuzione? (Un trucco comune)

Questa è la causa probabile. Dal momento che sta usando quello corretto (MS uno nel GAC) questo non è un problema, però si dovrebbe dare la caccia l'altro e rimuoverlo.

Altri suggerimenti

Ampliando (corretta) la risposta di ShuggyCoUk

In verità non importa quale versione del attributo viene utilizzato (GAC, terza parte, ecc ...). Tutto ciò che conta è il # / VB compilatore C può trovare qualche attributo con il nome corretto. L'attributo non serve funzionale nel codice. Esiste puramente per dire al compilatore "hey, questo è un metodo di estensione".

È possibile ignorare questo avvertimento.

Sono d'accordo con ShuggyCoUk sul fatto che la migliore linea d'azione è provare a rimuovere la dll incriminata.Tuttavia, ciò potrebbe non essere possibile.

Un altro modo per risolvere l'ambiguità di cui si lamenta il compilatore è cambiare l'alias della dll di riferimento.Nel tuo progetto, nella cartella Riferimenti, se clicchi su una dll referenziata vedrai la proprietà Alias.Per impostazione predefinita, è "global", che ti consente di fare cose come "global::SomeNamespace.SomeType".Potresti semplicemente essere in grado di cambiare l'alias in qualcos'altro.

Ciò ha risolto un problema che avevo per cui dovevo fare riferimento a Microsoft.Scripting.Core.dll, ma conteneva alcuni tipi che erano in conflitto con mscorlib.dll.Ho modificato la proprietà Alias ​​in "ThirdParty" anziché "global" e l'avviso è stato risolto.

Ho lo stesso problema.

Nel mio caso il problema era l'assemblea Mono.Cecil.

Migrazione da riferimenti locali a NuGet, quando aggiungo NHibernate fa riferimento al pacchetto aggiunge questo riferimento automaticamente.

Questo riferimento è stato rimosso, e compilato ancora una volta il mio progetto.

Rimuovi ed essere felice !!

Questa immagine è stata presa da ILSpy ( http://i.stack.imgur.com/Qyd5o .png )

Il compilatore non sa quale System.Runtime.CompilerServices.ExtensionAttribute

Così sta usando il defination da c: \ Program Files \ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Core.dll '

Un dll in uso potrebbe avere lo stesso extenstion.

I innescato questo errore con l'installazione di IIS con .NET 3.5 invece di 4.5 per caso.

Fix è stato quello di aggiungere 4,5 nel in "Aggiungi funzionalità ..." nel pannello di controllo.

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