zoukankan      html  css  js  c++  java
  • 不使用Visual Studio开发ASP.NET MVC应用(上篇)

         入行十多年,工作闲暇,还是对信息技术比较关注,经常测试一些新的技术,感受一下科技发展给大家带来的便利。Visual Studio接触也有年头了,对它总感觉乎近乎远的,既熟悉又陌生,一直没有像用别的工具一样发自内心的喜欢。想想还是因为微软求大求全的策略,而且还在自己工具上绑定一堆用不着的功能所造成的。近两年一直接触Linux,深深的被它的设计思想、理念感染了,导致现在我是能不用微软的东西就不用,能在Linux平台实现的绝不考虑Windows。

         首先说下起因:没有外界因素我是不会考虑Windows的。年前阿里云打折只要几块钱就能用一年云虚拟主机,就买了一个试用了下,先开始选择的CentOS系统,想在上面用NodeJS开发个小站点,后来发现这个虚拟主机不支持NodeJS开发,只能用PHP,PHP我不熟悉(网上说“PHP是最好的编程语言”,其实是个梗),也不想现学。就把系统换成Windows Server了,起码还能用.NET,这个看起来没那么讨厌。说到这还要吐槽一下,阿里云的.NET目前不支持.NET Core只能用传统ASP.NET开发。虽说以后肯定会支持NodeJS和.NET Core,但现在不行,阿里云也算是搞技术的,没有最新的、好玩的东西,怎么能让开发者喜欢?。

         其次,我这人向来喜欢用最新版的软件,最新的技术(处女座还是强迫症?),不想为玩代码,安装一套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-studio

    我的实现和stackoverflow有点不一样,并且加入了对Entity Framework的支持

    需要安装的软件

    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.NETASP.NET MVC 3AssembliesSystem.Web.Mvc.dll拷贝进去,打开命令提示符,执行以下命令,将源代码编译为dll:

    C:WindowsMicrosoft.NETFramework64v4.0.30319csc.exe /t:library /out:binMyApplication.dll /r:"binSystem.Web.Mvc.dll" ControllersHomeController.cs Global.asax.cs App_StartRouteConfig.cs

    没有任何错误的话,bin目录下应该已经生成了MyApplication.dll文件。

    编译完后,可以将下列文件发布到阿里云或任意一个装了IIS且支持ASP.NET的Windows服务器,打开浏览器,应该可以看到期待的结果了。

    binMyApplication.dll
    Views*
    Global.asax
    web.config

    注:按照ASP.NET的目录结构规范,可以把上面HomeController.cs放到Controllers文件夹里更合适,同时记得修改编译命令里对应路径。

    如果你在测试的时候遇到任何问题,欢迎留言。下一篇我将介绍如何在这个ASP.NET MVC项目里加入Entity Framework和Mater Page的支持。

  • 相关阅读:
    前端每周学习分享--第7期
    前端每周学习分享--第5期
    博客迁移声明
    使用Angular CLI创建Angular 2项目
    使用Gulp压缩CSS/JS
    [JS]继承方式总结
    [JS]算法总结
    圆梦之旅 – 日本(一)攻略篇
    新年畅想
    [CSS]三栏自适应布局
  • 原文地址:https://www.cnblogs.com/andy65007/p/6867417.html
Copyright © 2011-2022 走看看