入行十多年,工作闲暇,还是对信息技术比较关注,经常测试一些新的技术,感受一下科技发展给大家带来的便利。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文件,输入以下代码:

 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,输入代码:

 <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Home</title>
</head> <body>
<h1>Home Page.</h1>
</body>
</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文件,输入代码:

 <?xml version="1.0"?>
<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的支持。

不使用Visual Studio开发ASP.NET MVC应用(上篇)的更多相关文章

  1. 不使用Visual Studio开发ASP.NET MVC应用(下篇)

    书接上回! 前文“纯手工”.彻底抛弃Visual Studio,制作了一个ASP.NET MVC应用,运行起来还不错,项目目录.源代码.web.config等所有东西都已经做到“最简”,除去了Visu ...

  2. Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程

    原文地址:https://docs.asp.net/en/latest/data/ef-mvc/intro.html The Contoso University sample web applica ...

  3. Visual Studio 2017 ASP.NET Core开发

    Visual Studio 2017 ASP.NET Core开发,Visual Studio 2017 已经内置ASP.NET Core 开发工具. 在选择.NET Core 功能安装以后就可以进行 ...

  4. ASP.NET Core 中文文档 第二章 指南(2)用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API

    原文:Building Your First Web API with ASP.NET Core MVC and Visual Studio 作者:Mike Wasson 和 Rick Anderso ...

  5. ASP.NET安全[开发ASP.NET MVC应用程序时值得注意的安全问题](转)

    概述 安全在web领域是一个永远都不会过时的话题,今天我们就来看一看一些在开发ASP.NET MVC应用程序时一些值得我们注意的安全问题.本篇主要包括以下几个内容 : 认证 授权 XSS跨站脚本攻击 ...

  6. 带你使用Visual Studio 2019创建一个MVC Web应用

    工欲善其事必先利其器,我们既然有Visual Studio2019这样的IDE为什么不用?学.Net Core而不用Visual Studio进行开发可谓是多么另类呀!既然你已经安装了VS2019的话 ...

  7. Visual Studio开发首选!DevExtreme v19.1.6全新来袭

    DevExtreme Complete Subscription是性能最优的 HTML5,CSS 和 JavaScript 移动.Web开发框架,可以直接在Visual Studio集成开发环境,构建 ...

  8. 【转载】保哥 釐清 CLR、.NET、C#、Visual Studio、ASP.NET 各版本之間的關係

    我常常不仅仅逛 博客园,还会去找国外,特别是台湾的技术部落格,发现好的文章,我便会收录,今天我转载或者全文复制,在Google 博客园,一位叫保哥, 釐清 CLR..NET.C#.Visual Stu ...

  9. 用于 Visual Studio 和 ASP.NET 的 Web 应用程序项目部署常见问题

    https://msdn.microsoft.com/zh-cn/library/ee942158(v=vs.110).aspx#can_i_exclude_specific_files_or_fol ...

随机推荐

  1. FPM三:简单的SEARCH(OIF)

    这里是使用FPM Workbench自动生成的,没有去SE80创建WDA程序. 1.使用事务代码:FPM_WB.打开工作台. 2.点击Wizard for Creating Empty FPM App ...

  2. C++标准模板库(STL)之Map

    1.Map的常用用法 map:映射.可以将任何基本类型,结构体,STL容器映射到任何基本类型包括容器. 使用map,需要加map的头文件,#include<map>和using names ...

  3. html和css进阶

    html和css进阶 相对地址与绝对地址 网页上引入或链接到外部文件,需要定义文件的地址,常见引入或链接外部文件包括以下几种: <!-- 引入外部图片 --> <img src=&q ...

  4. Intellij IDEA 自动清除无效 import

    打开偏好设置: 输入auto import: 注:想在以后的工程中都自动清除,可以在File中如下图操作:

  5. 13、属性的get(存)和set(取)器

    原因:当对年龄重新进行赋值的时候就会调用set方法,然后进行判断,如果赋值小于10就会抛出异常.

  6. python中的turtle库(图形绘画库)

    turtle绘图的基础知识:1. 画布(canvas) 画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置. 设置画布大小 turtle.screensize(canvwidt ...

  7. python之路-----python操作 mysql

    ========================pymysql============================ 一.pymysql 基础 安装命令:pip3 install pymysql - ...

  8. SpringBoot Actuator

    SpringBoot Actuator 提供了检查项目内部信息的一整套API,通常在项目启动时可以看到. 1.引入依赖包 <dependency> <groupId>org.s ...

  9. Python随笔--继承

  10. iis7 设置http 自动跳转到https

    https://www.cnblogs.com/wxbug/p/7054972.html