2015-07-24 9 views
6

Ich habe VS 2015 installiert (nicht die RC, obwohl ich das vorher installiert hatte). Ich habe eine bestehende Lösung geöffnet, die in VS 2013 einwandfrei funktionierte, und folgende Fehlermeldung angezeigt.Warum benötigt VS 2015 einen Verweis auf System.Data.Entity, aber VS 2013 nicht?

BC30652 Verweis auf Assembly 'System.Data.Entity, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' erforderlich vom Typ 'EntityObject' enthält. Füge einen zu deinem Projekt hinzu.

Ich habe einen Verweis auf System.Data.Entity im Projekt als VS vorgeschlagen und es funktioniert. Ich frage mich jedoch, warum das passiert ist.

Wenn ich System.Data.Entity Verweis entfernen, funktioniert VS 2013 noch, aber VS 2015 löst Fehler aus. Das Projekt hat einen Verweis auf System.Data.

Hinweise zur Lösung:

  • Ursprünglich in VS entwickelt 2013
  • 4.0 .NET
  • auch Bezug auf System.Data
  • hat
  • hat 2 weitere Projekte, ein Haupt (die den Fehler verursacht) und eine DAL
  • Die DAL hat ein Entity Data Model (.edmx)
+1

Dies ist nur ein Schuss in die Dunkelheit, aber dies könnte aufgrund einer Änderung, wie der Compiler mit transitiven Abhängigkeiten handelt. Z.B. Nehmen wir an, Ihr Projekt A hängt von einer Bibliothek B ab und B stellt einen öffentlichen Typ C zur Verfügung, der von EntityObject abgeleitet ist. Ob A einen Verweis auf Entity Framework benötigt, hängt im Allgemeinen davon ab, was es mit der Klasse C macht. Leider gibt es keine festen Regeln dafür, wie dies funktioniert und es könnte von der Implementierung des Compilers abhängen. Da VS 2015 und .NET 4.6 mit neuen C# - und VB-Compilern ausgeliefert werden, könnten sich die Regeln auf subtile Weise geändert haben. – divega

+0

@divega Weißt du, wie ich deinen Schuss im Dunkeln testen kann? –

+0

Erstens, können Sie bestätigen, dass Ihre Anwendung von einer Bibliothek abhängt, die einen öffentlichen Typ darstellt, der von EntityObject abgeleitet ist? Wenn ja, können Sie in Ihrer Frage weitere Informationen darüber eingeben, wie der Code der Anwendung mit diesem Typ interagiert? Mit diesen Informationen könnte es möglich sein, eine einfache Repro zu erstellen (die EF sollte nicht involviert sein), die wir den Sprachlernern bringen können. Es kann auch möglich sein, eine Problemumgehung zu erstellen, sodass Sie die Referenz nicht hinzufügen müssen, wenn Sie danach suchen. – divega

Antwort

8

ich Bestätigung von der Sprache Visual Basic-Team bekam, dass dies aufgrund einer Änderung in ihrem Compiler in Visual Studio 2015 sehr wahrscheinlich ist:

... wir arbeiten eigentlich taten, um zu versuchen Dinge zügiger zu gestalten. Aber die Zusammenfassung ist, dass der Compiler möglicherweise mehr Referenzen für die Richtigkeit benötigt. Fügen Sie sie hinzu, wenn Sie können. Ich glaube, es gibt eine schnelle Lösung, wenn Sie die Glühbirne aufrufen.