Ich verwende Visual Studio 2015 CTP 6 unter Windows 8.1.Warum funktioniert das Hinzufügen einer Abhängigkeit in meinem Web-API (ASP.NET v5) -Projekt nicht vollständig?
Ich versuche, eine Web-API mit ASP.NET v5 zu schreiben, mit seinem neuen Projektdateiformat. Ich habe einen Verweis auf Noda Time v1.3.0 zu meiner project.json
Datei hinzugefügt, und der Editor in Visual Studio nimmt es auf, aber der Build-Prozess schlägt fehl.
Repro Rezept direkt von Grund auf:
- öffnen VS 2015 CTP 6
- in einer neuen Lösung neues Projekt anlegen:
- Wählen Sie ASP.NET Web Application Projekt Vorlage
- Select "ASP.NET 5 Preview Web API" im Vorlagen-Dialogfeld
- Bui ld das Projekt, nur um alles zu bestätigen ist
Öffnen Sie
project.json
, und in der (schlecht formatierte) "Abhängigkeiten" Abschnitt, fügen Sie eine zusätzliche Zeile am Anfang (um nicht ein Komma zu einer anderen Zeile hinzufügen):"NodaTime": "1.3.0",
- öffnen
Controllers\ValuesController.cs
Bearbeiten der parameterlos
Get()
Methode, so dass der Körper:return DateTimeZoneProviders.Tzdb.Ids;
DateTimeZoneProviders
werden rote Squiggles haben, was vernünftig ist - wir haben noch keineusing
Direktive.
- Setzen Sie den Cursor in
DateTimeZoneProviders
und schlug Ctrl +. - Sie sollten angeboten werden "using NodaTime;
" als eine mögliche Korrektur ... so weiß Intellisense (und damit Roslyn) definitiv über die Abhängigkeit. - Akzeptieren Sie den Fix. Die Squiggles werden verschwinden - alles ist gut, oder?
- Versuchen Sie, die Lösung zu erstellen: Sie sollten zwei Fehler erhalten, im Grunde angibt, dass die Abhängigkeit nicht gelöst wurde.
Im Explorer, wenn Sie in dem BugDemo
Lösung Verzeichnis suchen, erhalten Sie ein artifacts\obj\BugDemo\Debug\ProjectRawReferences
Verzeichnis mit „ASP.NET Core 5.0“ und „ASP.NET 5.0“ Verzeichnissen, von denen beide eine Menge von DLLs finden in ... aber nicht Noda Zeit.
Wenn Sie mit der rechten Maustaste auf das Projekt klicken und "Pakete wiederherstellen" wählen, wird das Problem nicht behoben.
Wenn ich das gleiche Projekt mit Projekt K bauen, ein kpm restore
hat abholen Noda Zeit, und wenn Sie wie unten einen Abschnitt zu project.json
hinzufügen, dann k web
Werke und http://localhost:5001/api/values Besuch zeigt Ihnen alle TZDB Zeitzone IDs :
"commands": {
"web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001"
},
Also, was mache ich falsch? Oder ist es nur ein Fehler?
Also sagen Sie, dass bestehende "Portable" -Bibliotheken nicht Core-kompatibel sind und für Core neu gebaut werden müssen? – Nate
@Nate: Die PCL/CoreClr-Dynamik wird noch entschieden. Das ist zu diesem Zeitpunkt nicht möglich. SO VIEL ICH WEISS. :) * Derzeit * ist es nicht möglich, in VS eine CoreClr-kompatible PCL zu erstellen. –
Fantastisch, danke. Werde es versuchen, sobald ich nach Hause komme. Überrascht sah ich das gleiche mit Json.NET - ich würde von MS erwarten, dass das funktioniert. Will überprüfen, dass das nicht nur Benutzerfehler war ... –