现在的位置: 首页 > 综合 > 正文

预编译 aspnet_compiler 和编译整合 aspnet_merge

2011年12月12日 ⁄ 综合 ⁄ 共 1483字 ⁄ 字号 评论关闭

asp.net1.1时,web项目可以编译成一个dll,然后发布该dllaspxascx页面即可。到了asp.net2.0里,web项目的编译则稍有不同。

 

首先,vs2005里有两种类型的web程序:web siteweb 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_mergerdll可以用。

 

 

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 -?

============================================

=================================================
这是代码,可以用来编译和整合dll的:
"C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe" -f -u -p "D:\MyProgram\WebSite\xxx" -v / "D:\MyProgram\Win\xxxx"
"C:\Program Files\MSBuild\Microsoft\WebDeployment\v8.0\aspnet_merge.exe" "D:\MyProgram\Win\xxxx" -o xxxx.dll 

======================
正常情况下,vs2005并没有aspnet_merge.exe,需要安装这个才可以:WebDeploymentSetup.msi。
vs2008下就已经有了。

抱歉!评论已关闭.