C#学习教程:从ASP.NET4.5MVCWeb应用程序迁移到.NETCore环境。我从事健康工作,我们绝对没有用户数据丢失或头脑混乱(我们的或他们的)。我通常不是C#/ASP.NET专家——尽管我可以适应这项任务。我一直在阅读官方文档@http://docs.asp.net/en/latest/getting-started/installing-on-linux.html并且可以看到这个任务实际上意味着'target.NETCORE(orsingle频道)框架'。我用谷歌搜索了一下,似乎没有一种事实上/简单的迁移方法——只需学习新的模块化设置,将配置文件插入project.json即可!在我尝试手动执行此操作之前-你有任何信息可以告诉我吗?要遵循一些系统的过程?也许我之前应该读过一些“陷阱”?该项目使用NHibernate和Autofac进行DI-看起来很标准。我只是想知道在Linux服务器上运行它需要多少阅读/实验——最终这才是最重要的。下面的答案已过时,但概述了将.Net4.5MVC应用程序更新到.NetCore框架的工作解决方案。.NetCore已做好生产准备CoreCLR和BCL尚未做好生产准备。预计。至少现在还没有,而且可能不会持续六个月到一年。至此,依赖支持就更??加未知了。Autofac没有核心clr兼容性库。他们会吗?这是研究的起点。他们什么时候这可能会持续一段时间,而且这是您无法控制的项目要求。即使对于非生产性工作,.NETCore仍然处于早期阶段。简单的答案是告诉你的老板等六个月,看看一切是如何发生的,而不是潜在地燃烧数百个工时或预生产代码。当然,这可能会被忽略,所以如果我绝对必须这样做,这就是我今天将如何进行。您的问题中总结了一些更改。您希望从ASP.NET4.5迁移到ASP.NET5。您还希望以新框架为目标。最后,您计划在新环境中运行该解决方案。这些中的每一个都可以独立处理(尽管有些不能先于其他处理),所以这就是我要采取的路线。阶段0)4.5.1之前不支持DNX的.Net框架版本。您将使用DNVM选择要定位的DNX。您不能针对不可用的内容,因此如果您的项目当前针对4.5.1更新之前的内容,请确认没有重大更改。如果有修复并保持condebase与4.5.1或更高版本兼容。阶段1)DNVM和DNX与现有的“完整”.NetFramework(4.5.1+)和.NetCore(5.0)兼容。跳转到在.NetCore5上运行的ASP.NET5可能很诱人,但这将是一个错误。由于.NetCore需要基于dnx的项目,而基于dnx的项目也支持.Net4.5.1(或更高版本),因此第一步是切换到asp.net5引入的新项目结构。可能需要进行一些实验文档在这一点上很简洁。目标将是您现有的应用程序(在.netframework4.5.1上的dnx中运行的asp.net4.5。没有项目迁移向导,因此您将从一个新的dnx项目(使用asp.net5“空”)模板开始)并复制您现有的代码。这似乎是一个很小的变化,但它打破了应用程序与仅安装在主机上的框架之间的紧密耦合。一旦您的代码库在dnx环境中运行,您就为其他环境奠定了基础。阶段2)迁移到asp.net5(MVC6)。您仍将以“完整”.net框架为目标并在Windows上运行。.Netcore不支持(也永远不会)支持您项目的现有asp.net版本(4.5)。但是,asp.net5与完整框架(4.x)和核心(5)兼容。这使您能够升级到asp.net5而无需切换到.netcore。第2阶段结束时的目标是使用在dnx中运行.net4.x的asp.net5的Web应用程序(功能)。是的,仍在Windows上,但我们越来越接近跨平台兼容性。阶段3)获取.net核心不支持的现有BCL引用和依赖项的清单。重构.net核心不支持的现有BCL引用。请记住,.net核心是完整??框架的一个子集,因此您可能会幸运地让所有现有代码都符合该子集,但如果您不这样做,则需要找到一种方法来使用.net来做到这一点。NETCore中提供了相同功能的一个子集。对于依赖项(即Autofac),您很可能需要升级,并且可能存在需要解决的重大更改。第3阶段的目标和结束是第2阶段的Web应用程序,但没有任何与核心bcl不兼容的依赖项。您无法控制的最大因素是第三方软件包。如果autofac没有发布核心clr兼容包,那么你就卡住了(或者需要考虑使用替代方案)。第4阶段)第3阶段结束意味着您拥有一个.net核心兼容堆栈,但您仍然以完整框架为目标。现在终于将目标切换到核心clr(dnvm支持多个并排运行时=dnx)。此时我仍在部署到Windows,一次一个变量。在第4阶段结束时,您可以在Windows环境中托管的.net核心上运行您的Web应用程序。阶段5)。现在您可以解决任何Windows依赖项。至少从IIS迁移,确保任何路径处理都以操作系统中立的方式完成,并且不会调用Windows特定的资源,如注册表。核心clr和bcl现在应该更加成熟,因此您不会试图瞄准移动目标。在我看来,试图一次完成它是灾难的根源。如此多的并行更改将从非功能性解决方案开始,并且它可能仍然无法正常工作。通过分阶段进行,您可以将解决方案迁移到交叉兼容的目标,同时在每个步骤仍具有功能输出。我知道这是一个老问题,但我想它需要更新。因为一些生产应用将asp.netmvc迁移到了asp.netcore。我收集了一些逐步迁移。我希望它会有用。对的,这是可能的。1)创建一个新的空核心ASP.NETweb应用程序,其名称与之前的项目相同。所以名称空间将匹配。2)安装Microsoft.AspNetCore.Mvc和Microsoft.AspNetCore.StaticFilesNuGet包。ASP.NET运行时是模块化的,您必须明确选择提供静态文件3)打开.csproj文件并添加PrepareForPublish目标:例如4)打开Startup.cs文件并更改代码以匹配以下内容:namespaceWebApp1{公共类启动{publicvoidConfigureServices(IServiceCollectionservices){services.AddMvc();}publicvoidConfigure(IApplicationBuilderapp,IHostingEnvironmentenv,ILoggerFactoryloggerFactory){loggerFactory.AddConsole();如果(env.IsDevelopment()){app.UseDeveloperException)Page(;}app.UseStaticFiles();app.UseMvc(routes=>{routes.MapRoute(name:"default",template:"{controller=Home}/{action=Index}/{id?}");});}}}5)添加一个控制器文件夹。然后将名为HomeController.cs的MVC控制器类添加到Controllers文件夹中。请为中期测试执行以下操作将Views/Home/Index.cshtml文件的内容替换为以下内容:Helloworld!6)从ASP.NETMVC项目迁移功能。我们需要移动以下内容:7)将每个方法从ASP.NETMVCOldController复制到NewController8)将About.cshtml、Contact.cshtml和Index.cshtmlRazor视图文件从ASP.NETMVC项目复制到ASP.NETCore项目。9)运行ASP.NETCore应用程序并测试每个方法。10)对于静态内容,将名为bower.json的Bower配置文件添加到项目根目录(右键单击项目,然后单击添加>新项目>Bower配置文件)。将Bootstrap和jQuery添加到文件中11)将旧MVC项目中的favicon.ico文件复制到ASP.NETCore项目中的wwwroot文件夹中。12)将旧ASP.NETMVC项目的Views文件夹中的_ViewStart.cshtml文件复制到ASP.NETCore项目的Views文件夹中。ASP.NETCoreMVC中的_ViewStart.cshtml文件没有变化。13)创建视图/共享文件夹。14)将旧ASP.NETMVC项目的Views/Shared文件夹中的_Layout.cshtml文件复制到ASP.NETCore项目的Views/Shared文件夹中。15)使用以下新闻更改razorview中的一些旧功能我认为你在这里混淆了一些东西。您最初的问题陈述是您当前在Windows上运行的MVC应用程序需要在Linux上运行。这本身不是问题。然后你继续说你研究了它并得出结论,你需要安装ASP.Net5(Core)才能在Linux上使用你的网站,这是错误的。ASP.NetMVC项目将在Mono中运行良好。Mono是Microsoft.NETFramework的开源实现,基于ECMA的C#标准和公共语言运行时。也就是说,Mono是一个开源实现。ASP.Net5是Microsoft的官方产品,但它不直接向后兼容现有的代码库。它还运行在Mono之上。您应该与您的项目经理一起评估您的需求,以确定是否可以使用Mono;开源在一些敏感领域(例如医疗保健)并未被广泛接受。准备好解释虽然MonoFramework是开源的,但在MonoFramework中运行的应用程序不是。但是,一般来说,采用Linux的组织使用的开源软件比他们意识到的要多,无论他们是否愿意。总而言之,您绝对可以在Linux上运行MVC应用程序,而无需使用MonoFramework对代码库进行太多更改。如果使用官方MicrosoftASP.Net5Linux发行版是项目要求,那么在关注Linux与Windows之前,您将重写应用程序的重要部分。还有另一个附录,ASP.Net5几乎完全是微软开源的,所以反对使用Mono的争论可能没有实际意义,尽管它可能是一个提到的问题。以上就是《C#学习教程:从ASP.NET4.5MVCweb应用迁移到.NETCore》的全部内容。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络合集,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处:
