我知道这是个老问题,但我猜需要更新。因为一些生产应用程序将 asp.net mvc 迁移到 asp.net core。我收集了一些一步一步的迁移。我希望它会有用。
是的,这是可能的。
1) 创建一个新的空 ASP.NET Core Web 应用,其名称与上一个项目相同。所以命名空间会匹配。
2) 安装 Microsoft.AspNetCore.Mvc 和 Microsoft.AspNetCore.StaticFiles NuGet 包。 ASP.NET 运行时是模块化的,您必须明确选择提供静态文件
3) 打开 .csproj 文件并添加一个PrepareForPublish 目标:
例如
<Exec Command="bower install" />
</Target>
4) 打开 Startup.cs 文件并更改代码以匹配以下内容:
namespace WebApp1
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
5)添加一个Controllers文件夹。然后将名称为HomeController.cs的MVC控制器类添加到Controllers文件夹中。
- 添加视图文件夹。
- 添加 Views/Home 文件夹。
- 将 Index.cshtml、MVC 视图页面添加到 Views/Home 文件夹。
对于中期测试,请执行以下操作
将 Views/Home/Index.cshtml 文件的内容替换为以下内容:
<h1>Hello world!</h1>
6) 从 ASP.NET MVC 项目迁移功能。我们需要移动以下内容:
- 客户端内容(CSS、字体和脚本)
- 控制器
- 观看次数
- 型号
- 捆绑
- 过滤器
- 登录/注销、身份
7) 将每个方法从 ASP.NET MVC OldController 复制到 NewController
8) 将 About.cshtml、Contact.cshtml 和 Index.cshtml Razor 视图文件从 ASP.NET MVC 项目复制到 ASP.NET Core 项目。
9) 运行 ASP.NET Core 应用并测试每个方法。
10) 对于静态内容,将名为 bower.json 的 Bower 配置文件添加到项目根目录(右键单击项目,然后添加 > 新项目 > Bower 配置文件)。将 Bootstrap 和 jQuery 添加到文件中
11) 将旧 MVC 项目中的 favicon.ico 文件复制到 ASP.NET Core 项目中的 wwwroot 文件夹中。
12) 将 _ViewStart.cshtml 文件从旧 ASP.NET MVC 项目的 Views 文件夹复制到 ASP.NET Core 项目的 Views 文件夹中。 _ViewStart.cshtml 文件在 ASP.NET Core MVC 中没有改变。
13) 创建一个 Views/Shared 文件夹。
14) 将 _Layout.cshtml 文件从旧 ASP.NET MVC 项目的 Views/Shared 文件夹复制到 ASP.NET Core 项目的 Views/Shared 文件夹中。
15) 更改 razor 视图中的一些旧功能,包括以下新闻
- 将
@Styles.Render("~/Content/css") 替换为<link> 元素
加载bootstrap.css
- 删除
@Scripts.Render("~/bundles/modernizr")。
注释掉 @Html.Partial("_LoginPartial") 行(围绕
与@*...*@)一致。
- 将
@Scripts.Render("~/bundles/jquery") 替换为<script>
元素。
- 将
@Scripts.Render("~/bundles/bootstrap") 替换为
<script> 元素。