前言
入行十多年,工作闲暇,还是对信息技术比较关注,经常测试一些新的技术,感受一下科技发展给大家带来的便利。Visual Studio接触也有年头了,对它总感觉乎近乎远的,既熟悉又陌生,一直没有像用别的工具一样发自内心的喜欢。想想还是因为微软求大求全的策略,而且还在自己工具上绑定一堆用不着的功能所造成的。近两年一直接触Linux,深深的被它的设计思想和理念感染了,导致现在是能不用微软的东西就不用,能在Linux平台实现的就不考虑Windows。
也不知是处女座还是强迫症,我这人向来喜欢用最新版工具软件、最新的技术,不想为玩代码,安装一套Visual Studio,因为它太大了,真的是太大了,离线安装文件27G,只安装ASP.NET Web开发工具要4个多G,我需求这么简单,装那么大的IDE干嘛?不知微软怎么想的?
或许是上面这些原因启发了我,何不抛开Visual Studio,从零开始构建一个ASP.NET 程序呢?
(牢骚完毕,正文开始)
工具:
文章实现参考了:
http://stackoverflow.com/questions/6783378/how-to-develop-a-simple-asp-net-mvc-project-without-visual-studio。我的实现和stackoverflow有点不一样,并且加入了对Entity Framework的支持,另外要说明,这篇文章改编自cnblogs那篇,也是我写的。
需要安装的软件
- ASP.NET MVC3 with Tools
https://www.asp.net/downloads/previous
如果不想安装这个,或因为版本旧找不到,可以直接从[1]或[2]下载(文章结尾有地址)
2. .NET Framework(with csc.exe tool),这个自己百度吧,建议去Microsoft官网下载,最新版.NET 4.6或4.7都可以
安装好上面两个必备工具后,接着下面步骤:
3. Visual Studio Code(可选),这个主要用来编写代码,你也可以用任意自己喜欢的文本编辑器
4. IIS Express(可选)[3],这个用来运行开发完成的ASP.NET程序
步骤:
第一步:随便找个空文件夹,我们叫它项目根目录“/”,在根目录/下建立文件HomeController.cs文件,输入以下代码:
using System.Web.Mvc; | |
namespace MyApplication | |
{ | |
public class HomeController : Controller | |
{ | |
public ActionResult Index() | |
{ | |
return View(); | |
} | |
} | |
} |
第二步,在根目录/下,建立Global.asax文件,输入下面代码:
<%@ Application Codebehind="Global.asax.cs" Inherits="MyApplication.MvcApplication" Language="C#" %>
第三步,在根目录/下,建立Global.asax.cs文件,输入代码:
using System.Web.Mvc; | |
using System.Web.Routing; | |
namespace MyApplication | |
{ | |
public class MvcApplication : System.Web.HttpApplication | |
{ | |
protected void Application_Start() | |
{ | |
RouteConfig.RegisterRoutes(RouteTable.Routes); | |
} | |
} | |
} |
第四步,在目录/App_Start下建立RouteConfig.cs文件,输入代码:
using System.Web.Mvc; | |
using System.Web.Routing; | |
namespace MyApplication | |
{ | |
public class RouteConfig | |
{ | |
public static void RegisterRoutes(RouteCollection routes) | |
{ | |
routes.MapRoute( | |
name: "Default", | |
url: "{controller}/{action}/{id}", | |
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } | |
); | |
} | |
} | |
} |
第五步,在/Views/Home目录下建立Index.cshtml,输入代码:
<html> | |
<head> | |
<meta charset="utf-8" /> | |
<title>Home</title> | |
</head> | |
<body> | |
<h1>Home Page.</h1> | |
</body> | |
</html> |
第六步,在/Views目录下建立web.config文件,输入代码:
<configuration> | |
<configSections> | |
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> | |
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> | |
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> | |
</sectionGroup> | |
</configSections> | |
<system.web.webPages.razor> | |
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> | |
<pages pageBaseType="System.Web.Mvc.WebViewPage"> | |
<namespaces> | |
<add namespace="System.Web.Mvc" /> | |
<add namespace="System.Web.Mvc.Ajax" /> | |
<add namespace="System.Web.Mvc.Html" /> | |
<add namespace="System.Web.Routing" /> | |
<add namespace="MyApplication" /> | |
</namespaces> | |
</pages> | |
</system.web.webPages.razor> | |
<appSettings> | |
<add key="webpages:Enabled" value="false" /> | |
</appSettings> | |
</configuration> |
第七步,在根目录/下建立web.config文件,输入代码:
<configuration> | |
<appSettings> | |
<add key="webpages:Enabled" value="false"/> | |
</appSettings> | |
<system.web> | |
<compilation targetFramework="4.5"> | |
<assemblies> | |
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> | |
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> | |
</assemblies> | |
</compilation> | |
<customErrors mode="Off"/> | |
</system.web> | |
</configuration> |
第八步,在根目录/下建立bin文件夹,为方便编译,将文件C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll拷贝进去,打开命令提示符,执行以下命令,将源代码编译为dll:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /t:library /out:bin\MyApplication.dll /r:"bin\System.Web.Mvc.dll" Controllers\HomeController.cs Global.asax.cs App_Start\RouteConfig.cs
完成:
没有任何错误的话,bin目录下应该已经生成了MyApplication.dll文件。
编译完后,可以将下列文件发布到阿里云或任意一个装了IIS且支持ASP.NET的Windows服务器,打开浏览器,应该可以看到期待的结果了。
bin\MyApplication.dll
Views\*
Global.asax
web.config
注:按照ASP.NET的目录结构规范,可以把上面HomeController.cs放到Controllers文件夹里更合适,同时记得修改编译命令里对应路径。
如果你在测试的时候遇到任何问题,欢迎留言。下一篇我将介绍如何在这个ASP.NET MVC项目里加入Entity Framework和Mater Page的支持。
附录:
[1]http://go.microsoft.com/fwlink/?LinkID=215693
[2]http://files.cnblogs.com/files/andy65007/System.Web.Mvc.zip
[3]IIS Express:打开微软官网
https://www.microsoft.com/zh-cn/ ,在右上角搜索框输入Internet Information Services (IIS) 10.0 Express,64位系统下载这个
iisexpress_amd64_zh-CN.msi