Frage

Ich erhalte eine seltsame Warnung:

Der vordefinierte Typ „System.Runtime.CompilerServices.ExtensionAttribute“ ist in mehreren Assemblys im globalen Alias ​​definiert;Verwenden der Definition aus „c:\Program Files eference Assemblies\Microsoft\Framework\v3.5\System.Core.dll“

Da keine Zeilennummer angegeben ist, ist es schwierig herauszufinden, worum es geht.

Der Compiler-Fehlercode lautet CS1685

War es hilfreich?

Lösung

Sind Sie mit jemandem dll (oder eigene), die dieses Attribut umgesetzt hatte (mit genau dem gleichen Namen) selbst als ein Mittel, einige c # 3.0-Features auf Pre Net 3.5 Runtimes verwenden? (Ein gemeinsamer Trick)

Dies ist die wahrscheinliche Ursache. Da es die richtigen verwendet (die MS eines im GAC) ist dies kein Problem, wenn Sie die andere jagen sollten und es entfernen.

Andere Tipps

Der Ausbau auf ShuggyCoUk die (richtige) Antwort

Ehrlich gesagt ist es egal, welche Version des Attributs verwendet wird (GAC, 3. Teil, etc ...). Alles, was zählt, ist der C # / VB-Compiler einige Attribute mit dem richtigen Namen zu finden. Das Attribut dient keinen funktionalen Zweck im Code. Es existiert lediglich den Compiler zu sagen, „hey, das ist eine Erweiterung Methode“.

Sie können diese Warnung ignorieren.

Ich stimme ShuggyCoUk zu, dass die beste Vorgehensweise darin besteht, zu versuchen, die problematische DLL zu entfernen.Das ist jedoch möglicherweise nicht möglich.

Eine andere Möglichkeit, die vom Compiler beanstandete Mehrdeutigkeit zu beheben, besteht darin, den Alias ​​der referenzierten DLL zu ändern.Wenn Sie in Ihrem Projekt im Ordner „Referenzen“ auf eine referenzierte DLL klicken, wird die Eigenschaft „Aliases“ angezeigt.Standardmäßig ist dies „global“, was Ihnen Dinge wie „global::SomeNamespace.SomeType“ ermöglicht.Möglicherweise können Sie den Alias ​​einfach in einen anderen ändern.

Dadurch wurde ein Problem behoben, bei dem ich auf Microsoft.Scripting.Core.dll verweisen musste, aber es enthielt einige Typen, die mit mscorlib.dll in Konflikt standen.Ich habe die Aliases-Eigenschaft in „ThirdParty“ statt in „global“ geändert und dadurch die Warnung behoben.

Ich habe das gleiche Problem.

In meinem Fall war das Problem der Montage Mono.Cecil.

von lokalen Referenzen Migration auf NuGet, wenn ich hinzufügen NHibernate das Paket verweist fügt automatisch diese Referenz.

Diese Referenz entfernt und wieder mein Projekt zusammengestellt.

es entfernen und glücklich sein !!

Dieses Bild wurde von ILSpy genommen ( http://i.stack.imgur.com/Qyd5o .png )

Der Compiler nicht weiß, welche System.Runtime.CompilerServices.ExtensionAttribute

So ist es die defination von c verwendet: \ Programme \ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Core.dll "

Ein DLL Sie die gleiche extenstion wahrscheinlich verwenden.

ich diesen Fehler ausgelöst durch IIS mit .NET 3.5 statt 4.5 versehentlich installieren.

Fix war in 4,5 zurück in hinzufügen "Features hinzufügen ..." in der Systemsteuerung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top