不使用Visual Studio開發ASP.NET MVC應用(上篇)

     入行十多年,工做閒暇,仍是對信息技術比較關注,常常測試一些新的技術,感覺一下科技發展給你們帶來的便利。Visual Studio接觸也有年頭了,對它總感受乎近乎遠的,既熟悉又陌生,一直沒有像用別的工具同樣發自心裏的喜歡。想一想仍是由於微軟求大求全的策略,並且還在本身工具上綁定一堆用不着的功能所形成的。近兩年一直接觸Linux,深深的被它的設計思想、理念感染了,致使如今我是能不用微軟的東西就不用,能在Linux平臺實現的毫不考慮Windows。html

     首先說下原由:沒有外界因素我是不會考慮Windows的。年前阿里雲打折只要幾塊錢就能用一年雲虛擬主機,就買了一個試用了下,先開始選擇的CentOS系統,想在上面用NodeJS開發個小站點,後來發現這個虛擬主機不支持NodeJS開發,只能用PHP,PHP我不熟悉(網上說「PHP是最好的編程語言」,實際上是個梗),也不想現學。就把系統換成Windows Server了,起碼還能用.NET,這個看起來沒那麼討厭。說到這還要吐槽一下,阿里雲的.NET目前不支持.NET Core只能用傳統ASP.NET開發。雖然說之後確定會支持NodeJS和.NET Core,但如今不行,阿里雲也算是搞技術的,沒有最新的、好玩的東西,怎麼能讓開發者喜歡?。web

     其次,我這人向來喜歡用最新版的軟件,最新的技術(處女座仍是強迫症?),不想爲玩代碼,安裝一套Visual Studio,由於它太大了,真的是太大了,離線安裝文件27G,安裝ASP.NET Web開發工具要4個多G,我需求這麼簡單,裝那麼大的IDE幹嗎?微軟究竟懂不懂開發者?編程

(上面都是牢騷,正文開始)瀏覽器

================服務器

參考:http://stackoverflow.com/questions/6783378/how-to-develop-a-simple-asp-net-mvc-project-without-visual-studiomvc

個人實現和stackoverflow有點不同,而且加入了對Entity Framework的支持app

須要安裝的軟件asp.net

1. ASP.NET MVC3 with Tools
https://www.asp.net/downloads/previous編程語言

若是不想安裝這個,或由於版本舊找不到,能夠直接從這裏這裏下載工具

2. .NET Framework(with csc.exe tool),這個本身百度,找Microsoft官網下載,最新版.NET 4.6或4.7均可以

安裝好上面兩個必備工具後,接着下面步驟:

第一步:隨便找個空文件夾,咱們叫它項目根目錄「/」,在根目錄/下創建文件HomeController.cs文件,輸入如下代碼:

 1 using System.Web.Mvc;
 2 
 3 namespace MyApplication
 4 {
 5     public class HomeController : Controller
 6     {
 7         public ActionResult Index()
 8         {
 9             return View();
10         }
11     }
12 }

   第二步,在根目錄/下,創建Global.asax文件,輸入下面代碼:

1 <%@ Application Codebehind="Global.asax.cs" Inherits="MyApplication.MvcApplication" Language="C#" %>

  第三步,在根目錄/下,創建Global.asax.cs文件,輸入代碼:

 1 using System.Web.Mvc;
 2 using System.Web.Routing;
 3 
 4 namespace MyApplication
 5 {
 6     public class MvcApplication : System.Web.HttpApplication
 7     {
 8         protected void Application_Start()
 9         {
10             RouteConfig.RegisterRoutes(RouteTable.Routes);
11         }
12     }
13 }

   第四步,在目錄/App_Start下創建RouteConfig.cs文件,輸入代碼:

 1 using System.Web.Mvc;
 2 using System.Web.Routing;
 3 
 4 namespace MyApplication
 5 {
 6     public class RouteConfig
 7     {
 8         public static void RegisterRoutes(RouteCollection routes)
 9         {
10             routes.MapRoute(
11                 name: "Default",
12                 url: "{controller}/{action}/{id}",
13                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
14             );
15         }
16     }
17 }

   第五步,在/Views/Home目錄下創建Index.cshtml,輸入代碼:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8" />
 5     <title>Home</title>
 6 </head>
 7 
 8 <body>
 9     <h1>Home Page.</h1>
10 </body>
11 </html>

   第六步,在/Views目錄下創建web.config文件,輸入代碼:

<?xml version="1.0"?>

<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文件,輸入代碼:

 1 <?xml version="1.0"?>
 2 <configuration>
 3 
 4   <appSettings>
 5     <add key="webpages:Enabled" value="false"/>
 6   </appSettings>
 7 
 8   <system.web>
 9     <compilation targetFramework="4.5">
10       <assemblies>
11         <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
12         <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
13       </assemblies>
14     </compilation>
15 
16     <customErrors mode="Off"/>
17   </system.web>
18 
19 
20 </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的支持。

相關文章
相關標籤/搜索