入行十多年,工作闲暇,还是对信息技术比较关注,经常测试一些新的技术,感受一下科技发展给大家带来的便利。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. maven打jar包 没有主属性清单

    使用mvn clean package命令打包,java -jar 命令运行时,提示:“jar 包没有主属性清单”.修改pom文件后解决: <build> <plugins> ...

  2. 基于Kubernetes构建企业容器云

    前言 团队成员有DBA.运维.Python开发,由于需要跨部门向公司私有云团队申请虚拟机, 此时我在思考能否在现有已申请的虚拟机之上,再进行更加细粒度的资源隔离和划分,让本团队的成员使用, 也就是在私 ...

  3. kafka 常用参数

    通常的讲:kafka 的参数分为 Broker Configs 和 Topic-Level Configs,以 min.insync.replicas 为例,可以在 broker 和 topic 级别 ...

  4. css控制滚动条的出现隐藏导致的页面闪动的问题

    之前这些小细节都在实践的时候给忽视了,或者都动态加载,框架的使用等因素的隐藏,变得不那么容易出现. 今天看到张鑫旭大牛的微博,觉得记录一下这个小问题的解决方案 <div style=" ...

  5. java多线程高并发知识总结

    1.      计算机系统 使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行:当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了. 缓 ...

  6. linux安装anaconda3 conda: command not found

    在使用Anaconda3时出现: conda:未找到命令 最后发现每次开机后都要运行一个命令才行:export PATH=~/anaconda3/bin:$PATH 如果要永久保存路径: 1.在终端输 ...

  7. crt证书iis 中引用 程序目录提示 System.UnauthorizedAccessException:拒绝访问

    在站点根目录添加 Authenticated Users 权限

  8. H5样式(个人使用)

    @*定义全局样式*@ <style> body, ul, li, p, h1, h2, h3, h4, h5, h6, hr, span, form, fieldset, table, t ...

  9. 浅析构造函数,及public、private、protected、final、this、super关键字

    初学JAVA,感觉很多知识点不熟悉,看了好多遍教材,最终还是决定把它写下来,加深印象以便忘了的时候再过来复习一下.看上去字数可能比较多,其实内容很简明. 首先看this的用法: package tes ...

  10. 搭建SSH框架心得

    <Struts2+Spring4+hibernate3> 工程结构 导入相关jar包:自行网上百度即可,根据环境需要 写dao类 以及实现 package com.icommon.dao; ...