Pierwsze (małe) kłody…

…które całe szczęście udało się szybko pokonać.

Dodałem do mej solucji dwa dodatkowe projekty: jeden zawierający domain model, drugi odpowiadający za „gadanie” z bazą danych (szczegóły będą w kolejnym poście). Projekty dodaje się standardowo poprzez Add → New Project… – należy wtedy wybrać Class Library (Package).

Ta templatka służy do utworzenia paczki Nuget, która może być później dostarczana na dowolne platformy. Uzupełniłem nowo powstałe projekty klasami, i nareszcie przyszła pora na dodanie odpowiednich wpisów w Startup.cs (AddEntityFramework() i AddScoped()). I tu *upa, projekty są obecne w referencjach, ale gdy dodaję:

using WPM.MojDrugiProject

kompilator wrzeszczy błędem, że takiej przestrzeni nazw „nima”.

Po paru chwilach znalazłem przyczynę takiego stanu rzeczy. Okazało się że templatka Class Library (package) domyślnie ma ustawione frameworki na net451 i , dotnet5.4, a projekt typu MVC Core – dnx451 i dnxcore50 (wyjaśnienie tych skrótów znajduje się tutaj). Dlatego też projekty „nie widziały się”. Rozwiązaniem problemu było zamiana frameworków w projektach na dnx451 i dnxcore50 poprzez edycję pliku project.json i zamianę pola”framework” na:

"frameworks": {
  "dnx451": { },
  "dnxcore50": { }
},

Po tym prostym zabiegu moje projekty zaczeły się „widzieć” z głównym projektem.

Już był w ogródku, już witał się z gąską

Po powyższych operacjach, miałem nadzieję skompilować wreszcie projekt, lecz… pojawiła się masa kolejnych błędów typu The type or namespace ‚string’ does not exist in the namespace ‚System’ (are you missing an assembly reference?). Te błędy tyczyły się stringów, Guidów, Linq itd. – samych podstawowych elementów c#. Tutaj przyszło z pomocą samo Visual Studio. Edytor zasugerował znalezienie odpowiednich paczek na nugecie. Package Manager dociągnął mi:

  • System.Linq
  • System.Runtime
  • System.Runtime.InteropServices

Wniosek z tego płynie taki że w środowisku dnxcore50  nie ma dostępnych wszystkich możliwych bibliotek, lecz dociągamy je w razie potrzeby z nugeta.

Lecz właśnie dotkneło mnie jedno z praw Murphy’ego – Jeśli coś może pójść źle, to pójdzie: właśnie pękła mi rura od internetu i jestem offline (piszę tego posta w OneNote, później wrzucę na bloga). Nie mogę skompilować projektu ponieważ brakuje paczki z definicją IQueryable<T>. Pewnie da się pobrać wszystkie paczki na zaś z nugeta, no ale kto przewidział awarię Internetu?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *