因为vs.net太过于庞大了,所以并未装这个东东,平时构建网页喜欢用DW+EditPlus进行构建,今天想把做好的东西进行预编译,但发现直接用Framework中的csc.exe进行编译不能编译,老提示错误,于是构建了一个最简单的东东.
程序代码:
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<html>
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="Form_Post" runat="server">
<asp:Label id="name" runat="server"/>
</form>
</body>
</html>
--------------------------分隔线------------------------------------
Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
name.Text="hello world!";
}
}
这个只是在页面上用标签,然后在后台程序中将标签中的字符改为hello World!这个应该是所有入门的基础,理论上不会出错,可是在使用csc.exe进行编译的时候出现错误,提示:上下文中不存在"name",郁闷啊...
接着上MSDN上查了相关编译的资料,发现原来csc.exe只能用于编译*.cs程序文件.不是对ASP.NET WEB的预编译的,接着查找了想关的资料,并查看了vs.net(差点想装个vs.net然后用监控看下他的调用)后来终于在msdn上发现一个对vc.net编译机制的相关介绍,原来vs.net不是调用csc.exe进行编译的,而且调用一个叫aspnet_compiler进行预编译(极度郁闷,这个东东就在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727的目录里,我用2.0,详细的地址:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,请根据个人的计算机进行相对应的调整),好了,开始工作.
第一步,设定路径
进入命令提示符(也可以叫DOS操作窗)
键入 path,然后可以看到你现在计算机所默认的路径,如果没有指向相应的Framework目录的话,那么就需要做下面的事.以下有三种方法:
1.直接在命令提示符下键入:path C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
2.用记事本新建一个文件,内容:path =C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,然后保存为[文件名].bat
3.你可以在调用的时候每次都输入完整的路径,太变态了,偶很懒....
第二步,建立存放编译目录
好了,现在路径已经解决了.现在新建一个目录,这个目录也是编译后的文件的存放目录,因为编译后的文件不能与源放在一起,不然会提示不能编译成功!
第三步:整理编译资料
现在开始做编译前的处理了,需要编译的资料需要与你的IIS的可该问目录,也就是你IIS的设定目录,一般IIS的默认是C:\Inetpub\wwwroot,把需要编译的网页放进去,其它不需要的东东清理掉,或是转移掉,因为在进行编译的时候会把整个目录的东西都进行编译.这里很古板...
第四步:开始编译
上面的都做好了,现在开始编译,先来解释一下aspnet_compiler的命令格式.
aspnet_compiler [-?]
[-m metabasePath | -v virtualPath [-p physicalPath]]
[[-u] [-f] [-d] [-fixednames] targetDir]
[-c]
[-errorstack]
[-nologo]
[-keyfile file | -keycontainer container ] [-aptca] [-delaysign]]
-m metabasePath
指定IIS的的路径.不能与 -v 一同使用.
-v virtualPath
指定要编译的应用程序的虚拟路径,不能与 -m 一同使用
-p physicalPath
指定包含要编译的应用程序的根目录的完整网络路径或完整本地磁盘路径。如果未指定 -p,则使用 IIS 元数据库来查找目录。
此选项必须与 -v 选项一起使用,不能与 -m 选项一起使用。
-u
指定 Aspnet_compiler.exe 应创建一个预编译的应用程序,该应用程序允许对内容(例如 .aspx 页)进行后续更新。
如果省略该选项,生成的应用程序将仅包含编译的文件,而无法在部署服务器上进行更新。只能通过更改源标记文件并重新编译来更新应用程序。
必须包括参数 targetDir。
-f
指定该工具应该改写 targetDir 目录及其子目录中的现有文件。
-d
重写应用程序源配置文件中定义的设置,强制在编译的应用程序中包括调试信息。否则,将不会发出调试输出。
不能将 -d 选项用于就地编译;就地编译使用调试选项的配置设置。
targetDir
将包含编译的应用程序的根目录的网络路径或本地磁盘路径。如果未包括 targetDir 参数,则就地编译应用程序。
-c
指定应完全重新生成要编译的应用程序。已经编译的组件将重新进行编译。如果省略此选项,该工具将仅生成应用程序中自上次执行编译以来被修改的那些部分。
-----------大概解释这么多够用了,后面用到的时候很少--------
好了,现在进行编译,我以我的计算机为例,我的IIS的路径是d:\myweb我在d盘的根目录下建了一个newweb的目录,准备用来存放编译好的网页.现在可以在提示符下键入命令,路径已经设置好了.
命令:aspnet_compiler -v /myweb -p d:\myweb d:\newweb [回车]
好了,等待编译器指示编译完成,现在可以打开资源管理器里查看刚刚建的目录了,所有已经编译好的东西都在这个目录里了,再用EditPlus打开首页文伯,显示:这是预编译工具生成的标记文件,不应被删除!
然后将IIS里原来的文件移去,把已经编译好的东西COPY过去,开浏览器进行浏览,成功!没问题,可以正常浏览,又多试了几个其中包括数据库的操作,都没问题.
第一次发布东东写得有点乱,大家随便看看好了,别笑偶...偶还是很害羞滴.这里给许多不喜欢安装vs.net的朋友使用,说实话vs.net确实太大了,而且还要支持很多,偶的系统区,以前只分5000M的,装完以后都没剩下多少了,再加上虚拟内存...而且运行很慢,现在直接用DW+EditPlus做很不错,占资源很少,在这里不推荐,看个人喜欢好了,我个人主要写代码是用偶的笔记本,所以比较喜欢这类型方式.