2015-07-28 7 views
36

Ich habe ein neues ASP.NET 5 MVC-Projekt in Visual Studio 2015 erstellt. Im Assistenten zum Erstellen von Projekten habe ich die Vorlagen für .NET Framework 4.6 ausgewählt und dann auf dem nächsten Bildschirm "Web Application" aus ASP.NET 5 Preview Templates ausgewählt.VS 2015. Festlegen des richtigen Zielframeworks für ASP.NET 5-Webprojekt

jedoch nach der Erstellung scheint es, dass das Projekt nur „dnx451“ aufgeführt und „dnxcore50“ in „Rahmen“ Abschnitt project.json:

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

Ich habe versucht, „dnx451“ bis "zu ändern dnx46 ". Das Projekt wurde erfolgreich erstellt, aber als ich es ausführen wollte, erhielt ich folgende Fehlermeldung:

Das aktuelle Laufzeit-Zielframework ist nicht kompatibel mit '...'.

Aktuelle Laufzeit Target Framework: 'DNX, Version = V4.5.1 (dnx451)' Typ: CLR Architektur: x86 Version: 1.0.0-beta5

Wie ist es möglich, dass „Ziel zu ändern Framework "für ASP.NET 5 Projekt?

Hier ist mein global.json jetzt:

{ 
    "projects": [ 
    "src", 
    "test", 
    "wrap" 
    ], 
    "sdk": { 
    "version": "1.0.0-beta5", 
    "runtime": "clr", 
    "architecture": "x86" 
    } 
} 

aber es ist nicht wirklich wichtig, was dort aufgeführt ist. Ich habe bereits verschiedene Builds von 1.0.0-beta5 und 1.0.0-beta6 getestet

+0

was haben Sie in global.json? Wenn Sie mit der rechten Maustaste auf Projekt klicken und Eigenschaften wählen, haben Sie dort ein bestimmtes Framework überprüft? Wenn Sie mehr von Ihrer project.json sehen, um die wichtigsten Abhängigkeiten zu sehen, könnte es hilfreich sein, den Fehler zu diagnostizieren. –

+0

Ich habe den ursprünglichen Post aktualisiert und den Inhalt von global.json hinzugefügt. Allerdings habe ich schon versucht, die dort aufgelistete Version von "sdk" zu ändern - aber es hat nicht geholfen. – Sergiy

+0

Sie haben den Abschnitt Abhängigkeiten von project.json nicht angezeigt. Beta6 sollte gestern veröffentlicht werden und es scheint, als wäre es im Nuget-Feed, aber es gab noch keine Release-Ankündigung dafür und ich dachte, es sollte ein entsprechendes Tooling-Update für VS 2015 geben Beta5 bis mehr Nachrichten über beta6 Release –

Antwort

54

Das Problem ist, dass DNX ist bewusst, dass Ihr Projekt zielt auf dnx46, aber IIS ist nicht :). Daher startet IIS als .NET 4.5.1 (standardmäßig) und versucht, Ihr Projekt zu laden, das nicht mit 4.5.1 kompatibel ist.

In einer zukünftigen Version von VS Tooling werden wir das besser erkennen, aber bis dahin sind die Dinge für Webanwendungen, die die .NET-Versionen über übertreffen wollen, etwas schwierig. 4.5.1 . Im Moment schlage ich vor, bis dahin nur dnx451 zu verwenden (wenn Sie nicht von der .NET 4.5.2/4.6-Funktionalität abhängig sind), aber ich werde Ihnen unten einige Anweisungen geben, wie Sie dies heute tun können, wenn Sie 4.5 verwenden müssen. 2 oder höher.

Hinweis: dnx452 und dnx46 sind vollständig in Konsolenanwendungen unterstützt und wenn andere Server als IIS (wie Kestrel oder WebListener) verwendet wird. Grundsätzlich kann alles, was Sie mit dem nativen Bootstrapper dnx.exe starten können, mit dnx451 und dnx46 funktionieren, aber die anderen Hostingumgebungen (IIS, IIS Express) benötigen zusätzliche Hinweise, um das richtige Framework zu starten.

Damit dies heute funktioniert, müssen Sie eine Umgebungsvariable DNX_IIS_RUNTIME_FRAMEWORK auf das Zielframework setzen, das Sie verwenden möchten. Sie können dies auf der Seite Projekteigenschaften für die Webanwendung auf der Registerkarte Debuggen tun. Wählen Sie einfach das IIS Express Profil und fügen Sie so unter die Umgebungsvariable:

Launch Profile

Wir werden dies auf die Known Issues, erhalten hinzugefügt, weil es aussieht wie wir es verpasst, und wie ich oben sagte, wir werde die Standard-Erfahrung in VS verbessern, also ist das nicht notwendig :).

+0

Das war die Lösung für mein Ende, danke Andrew! – MisterJames

+0

Vielen Dank für die ausführliche Erklärung. Gut zu wissen, dass es nicht meine Schuld war :) – Sergiy

+0

@Andrew Krankenschwester Muss ich beta5 deinstallieren, damit dies funktioniert? anscheinend versucht es immer, mit dnx 451 zu starten, trotz meiner bemühungen, eine bestimmte laufzeit zu verwenden (beta6) – Dbl

2
"DNX_IIS_RUNTIME_FRAMEWORK" : "DNX46" 

Der Wert ist case sensitive

+1

Von dem, was ich gelesen habe DNX für Framework-Identifizierung ist weg. Nach dem Lesen dieser beiden Artikel http: //www.hanselman.com/blog/ASPNET5IsDeadIntroducingASPNETCore10AndNETCore10.aspx .... https://github.com/dotnet/corefx/blob/master/Documentation/project-docs/standard-platform. md – DRobertE

Verwandte Themen