2015-07-04 2 views
19

Używam MVC 5 i .net 4.6 do tworzenia interfejsu API sieci Web, który może również połączyć się z moją aplikacją mobilną.Wstępnie zdefiniowany typ "System.Object" nie został zdefiniowany lub zaimportowany .net 4.6

Ilekroć buduję projekt, dostaję setki błędów informujących mnie, że muszę dodać referencje, które już tam są i że dosłownie każdy typ w moim projekcie "nie istnieje". Niektóre przykłady tych błędów: (nie w tym jeden w tytule)

ErrorList

Co próbowałem:

  • dodał odniesienie do System.Runtime poprzez Nuget. (Zalecenie od this question.)
  • Usunięto aspnetcore50 ze struktur w pliku project.json. (Kolejna rekomendacja, this question.)
  • Restartowanie VS2015, moja maszyna.
  • Przechodzenie przez menedżera pakietów nuGet i aktualizowanie każdego pakietu w moim projekcie do najnowszego.
  • Faktycznie upewniając się, że widzę odniesienia w węźle referencji eksploratora rozwiązań.

UPDATE: -Mój project.json plik wygląda następująco. (Po zmodyfikowaniu na podstawie Karls odpowiedź. Lista błędów jest teraz w dół do dziesięciu, jednak są one wciąż te same błędy, jak wcześniej.)

{ 
    "commands": { 
    "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000" 
    }, 
    "dependencies": { 
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta5", 
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta5", 
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta5", 
    "Microsoft.AspNet.Mvc": "6.0.0-beta5", 
    "System.Runtime": "4.0.20-beta-23019" 
    }, 
    "exclude": [ 
    "wwwroot", 
    "node_modules", 
    "bower_components" 
    ], 
    "frameworks": { 
    "dnx451": { 
     "frameworkAssemblies": { 
     "System.Data": "4.0.0.0", 
     "System.Data.DataSetExtensions": "4.0.0.0", 
     "System.Data.Linq": "4.0.0.0" 
     } 
    } 
    }, 
    "publishExclude": [ 
    "node_modules", 
    "bower_components", 
    "**.xproj", 
    "**.user", 
    "**.vspscc" 
    ], 
    "version": "1.0.0-*", 
    "webroot": "wwwroot" 
} 
+0

Możesz usunąć zarówno "aspnet50", jak i "aspnetcore50", zmieniono ich nazwę na dnx/dnxcore w wersji beta3 lub coś w tym stylu i są teraz bezużyteczne (chyba że w jakiś sposób przeszkadzają innym, jeśli tak, są zarówno bezużyteczne, jak i szkodliwe). –

+0

Usunięcie tych dwóch zmniejszyło listę błędów do 450, poprawia się! – KidCode

Odpowiedz

1

Zgaduję trochę tutaj, ale wygląda podejrzanie, że używasz regularne rzeczy System.Data.* dla dnx451, ale nie ma nic, co by to wynagrodziło za dnxcore50. Czy kierujesz się również do wydania podstawowego, czy też jest to po prostu element projektu? Jeśli chcesz kierować na wydanie podstawowe i nadal używać starych rzeczy, musisz owinąć wszystko z tych złożeń jak ten.

#if DNX451 
// Do some DNX451 specific stuff here 
#endif 

I na odwrót.

#if DNXCORE50 
// Do some DNXCORE50 specific stuff here 
#endif 

Ale jeśli nie myśli o wsparcie to jeszcze bym po prostu usunąć z listy dnxcore50 ramowej i twoje błędy będą prawdopodobnie odejdzie.

+0

To były tylko pozostałości po tworzeniu projektu, które usunęły większość błędów. 10 po lewej! Jedynym problemem jest to, że błędy są nadal podobne do opisanych powyżej, tzn.) Wstępnie zdefiniowany typ "System.String" nie jest zdefiniowany lub zaimportowany – KidCode

+0

Te błędy nie powinny nadal występować, jeśli usunąłeś 'dnxcore50', ponieważ są one proste wbudowane typy. W 'dnxcore' może być konieczne zaimportowanie ich (ale zaraz po dodaniu innego pakietu otrzymasz odwołanie niejawnie tak często, że nie dodasz go ręcznie). Czy korzystasz z VS 2015 RC (Release Candidate) lub nadal używasz jednej z wersji beta? –

+0

Zaktualizowałem moje pytanie, aby pokazać mój plik, w jaki sposób się wyświetla po aktualizacji. Im również działa VS2015 RC. – KidCode

3

W moim przypadku miałem projekt, który wciąż był zbudowany na wersję beta dnx. Zmiana go na wersję, której używałam w innych projektach, naprawiła to.