在asp.net 2.0模型中,vs2005已经完全脱离了编译而成为了一个彻底的ide.算是一个不小的改动。其中更是取消了有关Web Application的概念,使得习惯了vs2003的人刚开始的时候会有一些摸不着头脑。下面简单说一下我在使用过程中自己总结的,算是一点经验。

新建web工程并且位置是文件系统的时候,vs2005只是帮你建好了一个sln文件,这个东西只是指引msbuild 如何进行编译的,过程是:ide 调用 msbuild ,msbuild解析sln文件,msbuild调用aspnet_compiler.exe进行网站的编译。所以aspnet_compiler.exe只是负责进行网站的编译的。

预编译的概念在 .netframework 1.1 里面就存在了,vs2003中的预编译指的是将页面对应的cs/vb文件与resx文件编译后统一集成到一个dll中放到bin目录下,将aspx文件直接拷贝过去。这样做会留下隐患,因为aspx文件就直接暴露在最后的发行包中,如果完全是codeb-behind模型还好,只能改改界面,如果采用了页面上的来生成页面,源代码就暴露了。针对这些问题,vs2005采用了一种新的模式。
请参看ASP.NET 编译工具 (Aspnet_compiler.exe) 这篇文章了解对各种文件的处理方式。
IDE发布:
vs2005中选择 生成-〉发布网站,在对话框中的操作将映射到aspnet_compiler.exe的参数中,可更新的发布对应 -u,其他选项类似,请参考上面的文章了解。
注意:发布时将忽略web.config中的debug参数,统一生成无调试信息的文件。
手工编译:
简单说来,如果是无更新发布模式编译,appcode下面的class编译成dll放在bin下,页面内容清空位置不变作占位用,同时页面被编译成一个随机名称的dll,增加一个同名.compiled文件到bin目录下,内容大概如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <preserve resultType="3" virtualPath="/Forum/AdminList.aspx" hash="6772609c3" filehash="49154463f1d6738c" flags="110000" assembly="App_Web_hmrycg3w" type="ASP.forum_adminlist_aspx">
  3. <filedeps>
  4. <filedep name="/Controls/footer.ascx" />
  5. <filedep name="/Controls/header.ascx" />
  6. <filedep name="/Forum/AdminList.aspx" />
  7. <filedep name="/Forum/AdminList.aspx.cs" />
  8. <filedep name="/Forum/menu.ascx" />
  9. <filedep name="/Forum/menu.ascx.cs" />
  10. </filedeps>
  11. </preserve>

里面只是列出了页面上的customcontrol,这里已经完成了和masterfile的映射。这样最大限度的保护了页面的敏感信息,发布过的网站中只能看见一堆文件名了。可更新的发布模式与vs2003类似,页面就直接拷贝过来不予编译了。

讲了一堆原理,下面说一下aspnet_compiler.exe的调用方法,这是我使用的例子

我的开发目录是这样的

  1. Project/
  2. library/
  3. devroot/
  4. pubroot/
  5. proj.sln

使用的命令如下:

aspnet_compiler -v / -p .\devroot -f .\pubroot

分析:

  • -v / 指明了iis的虚拟目录
  • -p .\devroot 表示代码实际位置
  • .\pubroot 指明了要发布的位置
  • -f 表示强制改写目标位置

你还可以用-u来进行传统意义上的预编译,-d来插入编译符号。

总的来说,aspnet_compile结合msbuild,提供了一个很好的自动化编译环境,值得研究研究:)

转载于:https://www.cnblogs.com/jomi/archive/2006/10/12/527791.html

用aspnet_compiler发布网站 (转载:My way of my life )相关推荐

  1. VS2008 VS2010发布网站时如何产生固定命名的 Dll 文件

    VS2008 发布网站时如何产生固定命名的 Dll 文件 dev.firnow.com    时间 : 2010-12-08  作者:网络   编辑:fnw 点击:  82 [ 评论 ] - - VS ...

  2. vbscript调用WMI一键式式发布网站

    作为.net开发,在window环境下,不得不熟悉些脚本语言,来减轻些日常开发中所遇到的一些繁杂的事情,比如自动发布网站,自动发布网站等等. WMI windows管理程序接口,可用各种与语言调用,方 ...

  3. VS2012发布网站详细步骤

    VS2012发布网站详细步骤 原文 VS2012发布网站详细步骤 1.打开你的VS2012网站项目,右键点击项目>菜单中 重新生成一下网站项目:再次点击右键>发布: 2.弹出网站发布设置面 ...

  4. 在VS中巧用文件系统来发布网站

    2019独角兽企业重金招聘Python工程师标准>>> 首先要确保我们的网站写好后至少没有语法错误!然后右键你的网站,选择发布网站,如下图所示: 一切都搞定后就选择打开进行发布. 发 ...

  5. Windows Server 2012 RS 配置IIS8.0+发布网站

    一.配置iis 8.0 IIS 8.0 是 windows server 2012 自带的服务器管理系统.相比之前版本,IIS 8.0 安装和操作都更加简单,界面也很简洁,安装也很迅速. 1. 进入w ...

  6. VS2005发布网站问题及aspnet_merge.exe”已退出,代码为 1的错误

    解决方法一:如果遇到WebDeployment Project发布,生成的dll还是跟之前的一样多,而且出现"aspnet_merge.exe"已退出,代码为 1的错误,是因为你的 ...

  7. .NET项目发布网站具体步骤和注意事项

    ASP.NET项目发布网站具体步骤 1.     在解决方案管理器中右键项目名称,点击"发布网站",如图 2.     在发布窗口中选择"文件系统",然后选择文 ...

  8. Web Deploy发布网站及常见问题解决方法(图文)

    Web Deploy发布网站及常见问题解决方法(图文) Windows2008R2+IIs7.5 +Web Deploy 3.5 Web Deploy 3.5下载安装 http://www.iis.n ...

  9. VS2010 发布网站时文件丢失解决办法

    网站项目中包含了一些Excel模版文件以及XML样式表都是用单独文件夹存的,发布网站选择仅限运行此应用程序所需文件,发布成功后发现这两个文件夹都没发布出来,找了下原因,解决办法是选择文件打开属性窗口找 ...

最新文章

  1. nginx反向代理、负载均衡、动态请求
  2. 012-简单辅助元素
  3. Part1_1 pycharm的一些基础设置
  4. 2017年第1贴:EXT.JS使用MVC模式时,注意如何协调MODEL, STORE,VIEW,CONTROLLER的关系
  5. multi-mechanize error: can not find test script: v_user.py问题
  6. 【转】刨根究底CSS(1):开篇
  7. 一些科研中经常用到的工具
  8. mate7 刷机 android 7,Mate7 四大版本完整稳定版刷机包大集合!
  9. RocketMQ 消息队列单机部署及使用
  10. 数字万用表判断绝缘栅场效应管的好坏
  11. Linux 之 vim 使用
  12. malloc 是如何分配内存的?
  13. Misc_PNG高宽详解
  14. 大鱼吃小鱼算法java,瞬间高大上了!
  15. tesla p100 linux,服务器(Tesla P100)Ubuntu16.04+显卡驱动+cuda8.0+cudnn7.0.5
  16. java jtextarea边框_java swing中的JTextArea边框
  17. 2022年美国大学生数学建模(MCM/ICM)C题:量化交易策略
  18. 太简单!只学十分钟,Python菜鸟也能开发一个区块链客户端
  19. 算法面试题(格灵深瞳)
  20. (学习向)大数除法(余数,小数)

热门文章

  1. /dev/null 21 的作用
  2. 1058 选择题 (20 分)
  3. java基础教程第三版耿祥义,后台开发JAVA岗
  4. 连续四年百度Android岗必问面试题!Android校招面试指南
  5. 数据结构 | 链表:1097 删除重复元素
  6. 标准C程序设计七---77
  7. CodeForces - 869B The Eternal Immortality
  8. dos常用文件操作命令
  9. HDU 1950 Bridging signals
  10. JS 三级联动 下拉列表