ASP.NET MVC 4 ve Web API Projelerini ASP.NET MVC 5 ve Web API 2 Sürümüne Yükseltme
tarafından Rick Anderson
MVC 5 ve Web API 2 ASP.NET öznitelik yönlendirme, kimlik doğrulama filtreleri ve çok daha fazlası gibi birçok yeni özellik getirir. Diğer ayrıntılar için bkz https://www.asp.net/vnext .
Bu kılavuz, uygulamanızı en son sürüme yükseltmek için gereken adımlarda size yol gösterir.
Not
MVC 4 ve Web API'sinden sonraki sürüme hataya neden olan değişiklikler hakkında bilgi için lütfen Visual Studio 2013 Sürüm Notları için ASP.NET and Web Tools bakın.
Bu makale Youngjune Hong ve Rick Anderson ( @RickAndMSFT ) tarafından yazılmıştır.
Yükseltme Adımları
Projenizi yedekleyin. Bu izlenecek yol proje dosyanızda, paket yapılandırmanızda ve web.config dosyalarınızda değişiklik yapmanızı gerektirir.
Web API'sinden Web API 2'ye yükseltmek için global.asax dosyasında şunu değiştirin:
WebApiConfig.Register(GlobalConfiguration.Configuration);
kullanıcısı
GlobalConfiguration.Configure(WebApiConfig.Register);
Projelerinizin kullandığı tüm paketlerin MVC 5 ve Web API 2 ile uyumlu olduğundan emin olun. Aşağıdaki tabloda MVC 4 ve Web API ile ilgili değiştirilmesi gerekenden daha fazla paket gösterilmektedir. Aşağıda listelenen paketlerden birine bağımlı bir paketiniz varsa, MVC 5 ve Web API 2 ile uyumlu daha yeni sürümleri edinmek için yayımcılara başvurun. Bu paketler için kaynak kodunuz varsa, bunları MVC 5 ve Web API 2'nin yeni derlemeleriyle yeniden derlemeniz gerekir.
Paket Kimliği Eski sürüm Yeni sürüm Microsoft.AspNet.Razor 2.0.x.x 3.0.0 Microsoft.AspNet.WebPages 2.0.x.x 3.0.0 Microsoft.AspNet.WebPages.WebData 2.0.x.x 3.0.0 Microsoft.AspNet.WebPages.OAuth 2.0.x.x 3.0.0 Microsoft.AspNet.Mvc 4.0.x.x 5.0.0 Microsoft.AspNet.Mvc.Facebook 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.Core 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.SelfHost 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.Client 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.OData 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.WebHost 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.Tracing 4.0.x.x 5.0.0 Microsoft.AspNet.WebApi.HelpPage 4.0.x.x 5.0.0 Microsoft.Net.Http 2.0.x. 2.2.x. Microsoft.Data.OData 5.2.x 5.6.x System.Spatial 5.2.x 5.6.x Microsoft.Data.Edm 5.2.x 5.6.x Microsoft.AspNet.Mvc.FixedDisplayModes <o:p></o:p> Kaldırıldı Microsoft.AspNet.WebPages.Administration <o:p></o:p> Kaldırıldı Microsoft-Web-Yardımcıları <o:p></o:p> Microsoft.AspNet.WebHelpers Not
Microsoft-Web-Helpers, Microsoft.AspNet.WebHelpers ile değiştirilmiştir. Önce eski paketi kaldırmanız ve ardından daha yeni paketi yüklemeniz gerekir.
Ana ASP.NET paketleri arasında sürümler arası uyumluluk yoktur. Örneğin, MVC 5, Razor 2 ile değil yalnızca Razor 3 ile uyumludur.
Projenizi Visual Studio’da açın.
Aşağıdaki nuget paketlerinin ASP.NET yükleyin. Paket Yöneticisi Konsolu'nu (PMC) kullanarak bunları kaldıracaksınız. PMC'yi açmak için Araçlar menüsünü ve ardından NuGet Paket Yöneticisi'ni ve ardından Paket Yöneticisi Konsolu'nu seçin. Projeniz bunların tümünü içermeyebilir.
Microsoft.AspNet.WebPages.Administration
Bu paket genellikle MVC 3'ten MVC 4'e yükseltilirken eklenir. Kaldırmak için PMC'de aşağıdaki komutu çalıştırın:
Uninstall-Package -Id Microsoft.AspNet.WebPages.Administration
Microsoft-Web-Helpers
Bu paket olarakMicrosoft.AspNet.WebHelpers
yeniden oluşturuldu. Kaldırmak için PMC'de aşağıdaki komutu çalıştırın:
Uninstall-Package -Id Microsoft-Web-Helpers
Microsoft.AspNet.Mvc.FixedDisplayMode
Bu paket, MVC 4'te MVC 5'te düzeltilmiş bir hata için geçici bir çözüm içerir. Kaldırmak için PMC'de aşağıdaki komutu çalıştırın:
Uninstall-Package -Id Microsoft.AspNet.Mvc.FixedDisplayModes
PMC kullanarak tüm ASP.NET NuGet paketlerini yükseltin. PMC'de aşağıdaki komutu çalıştırın:
Update-Package
Update-Package
Parametresiz komut her paketi güncelleştirir. Kimlik bağımsız değişkenini kullanarak paketleri tek tek güncelleştirebilirsiniz. Update komutu hakkında daha fazla bilgi için komutunu çalıştırınget-help update-package
.
Uygulama web.config Dosyasını Güncelleştirme
Bu değişiklikleri Görünümler klasöründeki web.config dosyasında değil uygulama web.config dosyasında yaptığınızdan emin olun.
<runtime>/<assemblyBinding>
bölümünü bulun ve aşağıdaki değişiklikleri yapın:
"System.Web.Mvc" ad özniteliğine sahip öğelerde, sürüm numarasını "4.0.0.0" yerine "5.0.0.0" olarak değiştirin. (Bu öğede iki değişiklik.)
"System.Web.Helpers" ve "System.Web.WebPages" ad özniteliğine sahip öğelerde, sürüm numarasını "2.0.0.0" olan "3.0.0.0" olarak değiştirin. Her öğede iki değişiklik olacak şekilde dört değişiklik gerçekleşir.
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <!--Two elements removed for Clarity --> <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> <!--WebGrease element removed for Clarity --> </assemblyBinding
<appSettings>
bölümünü bulun ve aşağıda gösterildiği gibi web sayfalarını:sürüm olarak 2.0.0.0'dan 3.0.0.0'a güncelleştirin:<appSettings> <add key="webpages:Version" value="3.0.0.0" /> <add key="webpages:Enabled" value="false" /> <add key="PreserveLoginUrl" value="true" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings>
Tam dışındaki tüm güven düzeylerini kaldırın. Örnek:
<securityPolicy> <!--<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>--> </securityPolicy>
Görünümler klasörünün altındaki web.config dosyalarını güncelleştirme
Uygulamanız alanları kullanıyorsa, her alan klasörünün Görünümler alt klasöründeki her web.config dosyasını da güncelleştirmeniz gerekir.
"4.0.0.0" sürümünden "5.0.0.0" sürümüne "System.Web.Mvc" içeren tüm öğeleri güncelleştirin.
<system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <!--Elements removed for Clarity.--> </namespaces> </pages> </system.web.webPages.razor>
--> <pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <controls> <add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> </controls> </pages> </system.web>
"2.0.0.0" sürümünden "System.Web.WebPages.Razor" içeren tüm öğeleri "3.0.0.0" sürümüne güncelleştirin. Bu bölüm "System.Web.WebPages" içeriyorsa, bu öğeleri "2.0.0.0" sürümünden "3.0.0.0" sürümüne güncelleştirin
<configuration> <configSections> <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections>
Önceki bir adımda NuGet paketini kaldırdıysanız
Microsoft-Web-Helpers
PMC'de aşağıdaki komutu kullanarak yükleyinMicrosoft.AspNet.WebHelpers
:
Install-Package -Id Microsoft.AspNet.WebHelpers
Uygulamanız User.IsInRole() yöntemini kullanıyorsa, Web.config dosyasına aşağıdakileri ekleyin.
<system.webServer> <modules> <remove name="RoleManager" /> </modules> </system.webServer>
Son Adımlar
Uygulamayı derleyin ve test edin.
MVC 4 proje türü GUID'sini proje dosyalarından kaldırın.
- Çözüm Gezgini'da proje adına sağ tıklayın ve ardından Projeyi Kaldır'ı seçin.
- Projeye sağ tıklayın ve ProjectName.csproj Dosyasını Düzenle'yi seçin.
ProjectTypeGuids
öğesini bulun ve MVC 4 proje GUID'sini{E3E379DF-F4C6-4180-9B81-6769533ABE47}
kaldırın.- Açık proje dosyasını kaydedin ve kapatın.
- Projeye sağ tıklayın ve Projeyi Yeniden Yükle'yi seçin.