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

在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

react学习(57)--map赋值

<Radio.Group>{linksList?.map((item) > (<Radio key{item.key} value{item.key}>{item.value}</Radio>))}</Radio.Group>

使用 dojo/query

在本篇文章中&#xff0c;我们将了解DOM的查询以及如何运用dojo/query这个模块来轻松地选择节点并操作他们。 入门指南 在操作DOM的过程中&#xff0c;如何快速高效地检索出DOM节点显得相当重要。我们在Dojo DOM Functions中已经熟悉了 dom.byId&#xff0c;然而&#xff0c;在…

【Linux内核】虚拟地址空间布局架构

虚拟地址空间布局架构(Linux内核学习) 1.Linux内核整体架构及子系统 内核对下管理硬件,对上通过运行时库对应用提供服务 用户空间 使用malloc()分配内存通过free()释放内存 内核空间 虚拟进程负责从进程的虚拟地址空间分配虚拟页,sys_brk来扩大或收缩堆,sys_mmap负责在内存映…

天凉了,大家多穿衣服

这两天天气转凉&#xff0c;我还穿夏天的衬衫&#xff0c;结果今晚回来发现喉咙不舒服&#xff0c;只好去买药了。大家要保重身体呀&#xff01;

[开源]C#中开源软件大汇总(外国的)

一、博客类项目 1.SubText 项目介绍&#xff1a;Subtext 是一个个人博客发布平台&#xff0c;详细的介绍请进SubText 项目分类&#xff1a;博客 项目license:BSD License 项目主页&#xff1a;http://subtextproject.com/ 2.BlogEngine.net 项目介绍&#xff1a;详细的介绍请进…

【Linux内核】内存映射原理

【Linux内核】内存映射原理 物理地址空间 物理地址是处理器在总线上能看到的地址,使用RISC(Reduced Instruction Set Computing精简指令集)的处理器通常只实现一个物理地址空间,外围设备和物理内存使用统一的物理空间, 有些架构的处理器把分配给外围设备的物理地址称为设备内存…

react学习(59)--this.props语法糖

{...this.props}是props所提供的语法糖&#xff0c;可以将父组件的所有属性复制给子组件

我的名字

李桃春风有名流龙翔长空耀九州昌隆盛世舞文墨无拘无束无忧&#xff08;小弟自吹自擂&#xff0c;虚荣一番&#xff09;转载于:https://blog.51cto.com/73945/7773

div 居中嵌套

将一个 DIV 嵌套进另一个 DIV 容器&#xff0c;并保持水平居中、垂直居中&#xff0c;可使用以下代码&#xff1a; <html> <head><title>div居中嵌套</title><style type"text/css">.big{width: 800px;height: 500px;background: #333…

javascript学习系列(1):数组中的map方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说m…

spoolsv.exe占cpu 99%的解决方法(转)

前几天&#xff0c;太太的笔记本遇到了spoolsv.exe占cpu 99%的的问题&#xff0c;要我帮她重新安装操作系统。我是懒得重装的&#xff0c;所以在网上搜索了一下&#xff1a;大部分关于这个问题的文章都是将相关打印后台服务给禁用解决的&#xff0c;可是这样就不能打印了&#…

【Linux内核】物理内存组织结构

【Linux内核】物理内存组织结构 系统调用mmap 物理内存组织结构 体系结构 目前多处理器系统有两种体系结构&#xff1a; 1&#xff09;非一致内存访问&#xff08;Non-Unit Memory Access&#xff0c;NUMA&#xff09;&#xff1a;指内存被划分成多个 内存节点的多处理器系…

thinkphp __PUBLIC__的定义 __ROOT__等常量的定义

__TMPL__ > APP_TMPL_PATH, // 项目模板目录__ROOT__ > __ROOT__, // 当前网站地址__APP__ > __APP__, // 当前项目地址__GROUP__ > defined(GROUP_NAME)?__GROUP__:__APP__,__ACTION__ > __ACTION__, // 当前操…

面试准备勿重“难”轻“易”

眼下&#xff0c;有些大中专毕业生在做应聘面试准备时&#xff0c;往往把事情想得太复杂&#xff0c;把用人单位考官提出的问题想得过于难&#xff0c;于是在做面试准备时重“难”轻“易”&#xff0c;把精力都放在了高难度问题上&#xff0c;而忽视了基础性的理论和技术知识。…

react学习(60)--ant design中getFieldDecorator

<From><FormItem>//JS代码书写时需要用 { } 包裹起来&#xff0c;不能直接写在代码块中 {getFieldDecorator(userName,{initialValue:Jack,rules:[{required:true,message:用户名不能为空},{min:5,max:10,message:长度不在范围内},{pattern:new RegExp(^\\w$,g),m…

Binder 和parcel 讲解

http://blog.csdn.net/asd1031/article/details/16880071 http://www.cnblogs.com/plokmju/p/android_Service_aidl_CustomType.html //传递复杂对象&#xff0c;里面有详细的sample 说明转载于:https://www.cnblogs.com/wudizbb/p/3557896.html

C#面试题——附答案

下午随便在几个网站上转了转&#xff0c;发现了些C#的面试题&#xff0c;以csdn的一篇帖子收集最全&#xff0c;但是&#xff0c;没有答案&#xff0c;就自己做了一下&#xff0c;发上来&#xff0c;后续一些关于概念机制的题目&#xff0c;我继续做&#xff0c;先发点程序的&a…

类模板(参考《C++ Templates 英文版第二版》)

类模板(参考《C Templates 英文版第二版》) Chapter 1 类模板 与函数相似,类也可以被一个或者多个类型参数化 在这章,我们使用栈作为例子 2.1 类模板stack的实现 #include <vector> #include <cassert>template<typename T> class Stack { private:std…

react学习(61)--js contact

定义和用法 concat() 方法用于连接两个或多个数组。 该方法不会改变现有的数组&#xff0c;而仅仅会返回被连接数组的一个副本。