asp.net1.1时,web项目可以编译成一个dll,然后发布该dll和aspx、ascx页面即可。到了asp.net2.0里,web项目的编译则稍有不同。
首先,vs2005里有两种类型的web程序:web site和web project。
Web project和原来vs2003里差不多,可以编译成一个dll,但是需要安装一个sp1之后才会有这种类型出现:新建一个project,选择web..。
这种project产生之后会出现一个.csproj的项目文件;
Vs中看到的项目目录是xx项目。这种项目可以转化成下边的那一种。
而如果安装了vs2005之后默认的web类型就是web site,这种类型的只是一个文件夹而已,里面没有.csproj文件,vs中看到的是一个目录d:\xx\xxx。
这种项目的编译和发布就和vs2003时有些不同了,它可以使用预编译。
预编译可以把项目编译成一些dll,这些dll的名字随机。诸如“App_Web_4psgfks”之类的一对文件,编译之后还是再bin目录下。在这种情况下如何编译成一个dll,似乎有一个aspnet_merger的dll可以用。
而aspx页面的编译结果也有多种。
1: 如果选择不可以更新,那么编译之后的aspx页面就成了一个markup的页面,里面内容全空,只留下这样一个字符串: This is a marker file generated by the precompilation tool, and should not be deleted!。于此同时bin里产生一个对应的complied文件,里面写明类的映射。
2: 如果选择可以更新,那边编译之后的aspx页面保留内容,但是该页面的第一列则会被改变成这样:inherits="xx.xxxx, App_Web_4psgfks-"。这表明该后台类在哪一个dll中。
而如果是在vs2005之外,则可以直接调用aspnet_complier.exe完成上述预编译功能。该exe位于C:\Windows\Microsoft.NET\Framework\v2.xxxxx\aspnet_compiler.exe。
举例:
C:\Windows\Microsoft.NET\Framework\v2.0.50727>aspnet_compiler -v 项目名称 –p 项目目录 目标目录 –u
其中-u就是表示是否可以aspx页面更新的选项。
具体使用参数可以在cmd之后输入aspnet_compile -?。