{"id":5073,"date":"2017-02-12T21:00:13","date_gmt":"2017-02-12T20:00:13","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=5073"},"modified":"2017-02-12T21:00:13","modified_gmt":"2017-02-12T20:00:13","slug":"asp-net-core-projekt-von-version-1-0-auf-1-1-aktualisieren","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/asp-net-core-projekt-von-version-1-0-auf-1-1-aktualisieren\/","title":{"rendered":"ASP.NET Core Projekt von Version 1.0 auf 1.1 aktualisieren"},"content":{"rendered":"<p>Bereits seit Ende 2016 ist .NET Core in Version 1.1 erschienen. Sicherheitstechnisch ist dies wahrlich kein Pflicht-Update &#8211; Erh\u00e4lt 1.0 als LTS-Release drei Jahre lang Aktualisierungen. Dennoch lohnt sich ein Blick auf die Neuerungen. Darunter unter anderem View-Kompoenten oder die M\u00f6glichkeit, Razor-Views bereits zur Kompilierzeit statt zur Laufzeit vorzukompilieren. Leider ist der Updateprozess noch nicht ganz selbsterkl\u00e4rend. Dieser Artikel beschreibt die notwendigen Schritte eines Updates.<\/p>\n<p>Der manuelle Updateprozess ist \u00fcbrigens auch dann notwendig, wenn man ein neues ASP.NET Core Projekt erstellt. Die Visual Studio Vorlagen basieren n\u00e4mlich nach wie vor auf der 1.0 Version.<\/p>\n<h4><strong>Was brauchen wir?<\/strong><\/h4>\n<p>Alle ben\u00f6tigten Tools b\u00fcndelt Microsoft auf der\u00a0<a href=\"https:\/\/www.microsoft.com\/net\/core\" target=\"_blank\" rel=\"nofollow\">.NET Core Seite<\/a>. Hier darf man sich nicht von den Versionsnummern verwirren lassen. Gerade beim SDK besitzt die Installationsdatei den Namen\u00a0<em>dotnet-dev-win-x64.<strong>1.0.0<\/strong>-preview2-1-003177.exe<\/em>, der die \u00e4ltere Version 1.0 impliziert. Tats\u00e4chlich bezieht sich 1.0 nur auf das SDK, nicht die Laufzeitumgebung. Dies wird beim \u00d6ffnen des Installers klar:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/u-img.net\/img\/6611Ry.jpg\" \/><\/p>\n<p>Es wird die .NET Core 1.1.0 Laufzeitumgebung mit dem 1.0.0 SDK installiert.<\/p>\n<p>Im folgenden sind die Direktlinks zu allen erforderlichen Tools zu finden:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.visualstudio.com\/de\/post-download-vs\/?sku=community\" target=\"_blank\" rel=\"nofollow\">Visual Studio 2015 Update 3<\/a><\/li>\n<li><a href=\"https:\/\/go.microsoft.com\/fwlink\/?LinkID=827546\" target=\"_blank\" rel=\"nofollow\">.NET Core 1.0.1 Tools Preview 2<\/a><\/li>\n<li><a href=\"https:\/\/go.microsoft.com\/fwlink\/?LinkID=835014\" target=\"_blank\" rel=\"nofollow\">.NET Core 1.1 SDK<\/a>\u00a0(Zu finden auf dem oberen Tab\u00a0<em>Command line\/other<\/em>)<\/li>\n<\/ul>\n<h4><strong>SDK in global.json aktualisieren<\/strong><\/h4>\n<p>\u00dcber dem\u00a0<strong>src<\/strong> Ordner ist die Konfigurationsdatei\u00a0<strong>global.json<\/strong> im Ordner\u00a0<strong>Solution Items<\/strong> zu finden:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/u-img.net\/img\/2903Hf.png\" \/><\/p>\n<p>In Ihr muss der Knoten\u00a0<strong>sdk:version<\/strong> in <code class=\"\" data-line=\"\">1.0.0-preview2-1-003177<\/code> ge\u00e4ndert werden. Die gesamte Datei sieht dann wie folgt aus:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n{\r\n  &quot;projects&quot;: &#x5B; &quot;src&quot;, &quot;test&quot; ],\r\n  &quot;sdk&quot;: {\r\n    &quot;version&quot;: &quot;1.0.0-preview2-1-003177&quot;\r\n  }\r\n}\r\n<\/pre>\n<h4><strong>Aktualisieren des Frameworks in project.json<\/strong><\/h4>\n<p>Nun muss das Ziel-Framework in\u00a0<strong>project.json<\/strong> auf den neusten Stand gebracht werden. Dazu navigieren wir zur\u00a0<strong>frameworks<\/strong>-Sektion und ersetzen diese durch folgendes Snippet:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&quot;frameworks&quot;: {\r\n    &quot;netcoreapp1.1&quot;: {\r\n      &quot;dependencies&quot;: {\r\n        &quot;Microsoft.NETCore.App&quot;: {\r\n          &quot;type&quot;: &quot;platform&quot;,\r\n          &quot;version&quot;: &quot;1.1.0&quot;\r\n        }\r\n      },\r\n      &quot;imports&quot;: &quot;dnxcore50&quot;\r\n    }\r\n  }\r\n<\/pre>\n<p>Gleichzeitig muss <strong>Microsoft.NETCore.App<\/strong> aus den <strong>dependencies<\/strong> entfernt werden:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n  &quot;dependencies&quot;: {\r\n    &quot;Microsoft.NETCore.App&quot;: {\r\n      &quot;version&quot;: &quot;1.0.1&quot;,\r\n      &quot;type&quot;: &quot;platform&quot;\r\n    },\r\n    ...\r\n<\/pre>\n<p>Hier gen\u00fcgt es, den folgenden Block zu l\u00f6schen:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n&quot;Microsoft.NETCore.App&quot;: {\r\n      &quot;version&quot;: &quot;1.0.1&quot;,\r\n      &quot;type&quot;: &quot;platform&quot;\r\n},\r\n<\/pre>\n<h4><strong>Abh\u00e4ngigkeiten (NuGet-Pakete) updaten<\/strong><\/h4>\n<p>Da ASP.NET Core sehr modular aufgebaut ist, referenziert bereits ein leeres ASP.NET Core API-Projekt auf \u00fcber 10 NuGet-Pakete. Zumindest Microsofts eigene wie\u00a0<strong>Microsoft.AspNetCore.Mvc<\/strong> oder\u00a0<strong>Microsoft.AspNetCore.Logging<\/strong> m\u00fcssen ebenfalls auf die neuste Version aktualisiert werden. Dies k\u00f6nnten wir im <strong>dependencies<\/strong>-Schl\u00fcssel der\u00a0<strong>project.json<\/strong> erledigen.<\/p>\n<p>Deutlich schneller komfortabler geht es allerdings, wenn wir die vorhergegangenen \u00c4nderungen an der Datei abspeichern, und den NuGet-Paketmanager (Rechtsklick auf das Projekt &gt; <strong>NuGet-Pakete verwalten<\/strong>) \u00f6ffnen. Nun oben auf den Reiter\u00a0<strong>Aktualisierungen<\/strong> klicken, und NuGet listet und alle verf\u00fcgbaren Updates auf. Wie man rechts in der Versionsspalte sieht, alles Aktualisierungen von 1.0.x auf 1.1.0:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/u-img.net\/img\/2530Tz.png\" \/><\/p>\n<p>Hier einfach oben links einen Haken bei\u00a0<strong>Alle Pakete ausw\u00e4hlen<\/strong> setzen und auf\u00a0<strong>Aktualisieren<\/strong> klicken. Sollte bereits ein Projekt mit eigenen Paketen existieren, empfiehlt es sich nat\u00fcrlich, diese Liste vorher durchzusehen. M\u00f6glicherweise werden sonst ungewollt andere Pakete aktualisiert, die nicht im Zusammenhang mit dem .NET Core Update stehen.<\/p>\n<p>Wenige Sekunden sp\u00e4ter sind alle Abh\u00e4ngigkeiten auf dem neusten 1.1-Stand. Kontrollieren k\u00f6nnen wir dies ganz einfach durch erneutes \u00d6ffnen der\u00a0<strong>project.json<\/strong>. Dort sollten nun die Kernpakete wie\u00a0<strong>Microsoft.AspNetCore.Mvc<\/strong> in Version 1.1.0 vorliegen. Die Versionsverwaltung markiert uns au\u00dferdem diesen Block als ver\u00e4ndert durch einen gr\u00fcnen Balken an linken Rand:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/u-img.net\/img\/3928Ny.png\" \/><\/p>\n<p>Hier m\u00fcssen alle Versionen von 1.0.x auf 1.1.0 aktualisiert werden, sofern verf\u00fcgbar.<\/p>\n<p>Wie oben kurz angesprochen, h\u00e4tten wir den gleichen Effekt auch durch manuelles \u00c4ndern der Versionsstrings an dieser Stelle erreichen k\u00f6nnen. F\u00fcr einzelne Pakete eine sinnvolle L\u00f6sung. \u00dcbrigens ist es nicht mehr notwendig, die verf\u00fcgbaren Versionen manuell auf NuGet.org nachzuschlagen. Visual Studio bietet eine Art Intellisense an:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/u-img.net\/img\/5188Jo.jpg\" \/><\/p>\n<p>Dies ist auch auf der anderen Seite beim Eintippen des Paketnamens verf\u00fcgbar. Ein praktisches Hilfsmittel um zu sehen, welche Pakete bzw. Versionen verf\u00fcgbar sind.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bereits seit Ende 2016 ist .NET Core in Version 1.1 erschienen. Sicherheitstechnisch ist dies wahrlich kein Pflicht-Update &#8211; Erh\u00e4lt 1.0 als LTS-Release drei Jahre lang Aktualisierungen. Dennoch lohnt sich ein Blick auf die Neuerungen. Darunter unter anderem View-Kompoenten oder die M\u00f6glichkeit, Razor-Views bereits zur Kompilierzeit statt zur Laufzeit vorzukompilieren. Leider ist der Updateprozess noch nicht &#8230;<\/p>\n","protected":false},"author":5,"featured_media":5128,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[61],"tags":[590,522,537,589],"class_list":["post-5073","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-softwareentwicklung","tag-net-core","tag-asp-net-core","tag-asp-net-core-1-0","tag-asp-net-core-1-1"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/5073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=5073"}],"version-history":[{"count":19,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/5073\/revisions"}],"predecessor-version":[{"id":5092,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/5073\/revisions\/5092"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/5128"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=5073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=5073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=5073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}