ASP.NET发布网站解决方案

[+]
  1. ASPNET发布网站解决方案
  2. VS2008 VS2010发布网站时如何产生固定命名的 Dll 文件

ASP.NET发布网站解决方案

对于想了解发布网站那些选项的人来说这个文章是不错的,当然这个文章不是我写的。
第一个选项指定发布后是不是可以修改aspx文件,如果勾选,则发布后的网站行为基本与ASP.NET 1.1一致,只要没有增删修改控件,可以直接在服务器上修改aspx文件不用重新发布网站。
第二个选项指定是不是将每个aspx文件都编译成一个DLL文件,这样,就可以在修改了哪个aspx网页(包括aspx和cs文件),只需要更新一个DLL文件就行了,不用整站全部更新。

1.允许更新此预编辑站点

选中这一项后,编译出来的包括aspx文件和dll,与2003下一样。
不选中这一项,编译出来的aspx中没有界面信息,只有一句静态文本,就是不允许发布后修改页面

为了不让订阅网站的用户在第一次打开页面时感受到明显的延迟,可以使用"完全预编译(full pre-compilation)"方式.
如果是想此编译方式具有最大的安全性,应去掉"允许更新此预编译站点(Allow this precompiled site to be updateable". 这样代码文件(code,即cs文件)和内容文件(content file,即aspx)都会预编译
2,使用固定命名和单页程序集

会案照画面的类名编译出很多名字固定的dll。
3.对预编辑程序集启用强命名
在多数情况下,完全预编译方式正是所需要的方式,但是有时候因为内容文件变化不大,你可能希望在网站发布后,不用每次把所有的代码与内容文件全部编译,也许内容文件就不用再次编译,只需编译代码文件即可,这种情况下,就选中"允许更新此预编译站点",这种方式称为"只预编译代码文件(pre- compilation of code only)"方式.此方式与"完全预编译方式"相比较,只有一点区别,即内容文件仍是原始版本,而不是存根 (stub)版本,其它效果相同.在内容文件发布后也可以对其进行编辑,其变动在以后的请求到来时起作用,对于访问此站的用户来说是透明的.
附:
强命名(strong names) 如果一个assembly需要共享,则其必须使用强命名.一个强命名唯一标识了一个assembly.有四部分组成: 1,assembly名称(不包含文件扩展名);2,版本; 3,culture; 4,密钥对(即一个公钥和一个私钥),保存在key文件中,所以说 key文件就是同时包含了公钥和私钥的文件,在使用强命名时当然是需要此key文件的.创建key文件用命令: sn -k KeyPair.snk
延迟签名:显然,每个公司的私钥都必须非常安全地保存,然后这就带来一个进退两难的问题:在开发和测试一个共享的assembly时,需要使用强命名方式, 而创建强命名时肯定需要访问私钥的,但是又不能把公司的私钥提供给参与项目开发的且需要创建强命名的所有开发人员,怎么办? 这时就要用"延迟签名"技术.此种方式下,在创建强命名assembly时,只需要提供公钥,因为公钥提供给所有的人是允许的,也是安全的,利用公钥,开发人员可以进行程序的开发和测试工作,直到准备进行最终的build时,才同时使用公钥和私钥. 延迟签名需要从key文件中把公钥解出来,形成独立的公钥文件,通过使用命令: sn -p KeyPair.snk PublicKey.snk即可.这样,publicKey.snk只包含公钥,就可以用了.

出现问题

visual studio2005将网站开发和网站发布的目录分开,本身是个很好的设定
但每一次发布网站,网站dll文件都会生成随机的名字,页面继承的类都会继承随机的名字
这就造成了,哪怕是一点很小的修改,在发布网站之后,也必须重新上传所有的页面
如果采用“固定命名和单页程序集”的方式,又会生成太多dll文件,看着就心烦

解决方法

安装:
http://download.microsoft.com/download/9/4/9/9496adc4-574e-4043-bb70-bc841e27f13c/WebDeploymentSetup.msi
右键在当前解决方案里生成一个:Add Web Deployment Project 项目, 在该项目里就可以设置生成DLL的命名方式了,以后生成该项目就可以生成相应的网站!原有的发布网站的功能可以退休了!

参考微软原文

http://msdn2.microsoft.com/en-us/asp.net/aa336619.aspx

使用WebDeployment Project改善VS2005发布网站问题 (一) 基础

VS2005发布网站时不会像VS2003一样生成规则的DLL文件、而生成的DLL文件名含有随机数且不能一个项目生成一个DLL文件、让人有一些遗憾、为了做到像vs2003一样,微软发布了WebDeployment Project插件可解决此问题:
下载地址

1、下载后安装、右键选择vs2005中的项目、会出现一个选项"Add Web Deployment Project"(

2、选择添加一个WebDeployment Project(输入程序集名称和发布地址)

3、此时解决方案中会多出一个项目

4、右键选择该项目设置相应属性

5、右键选择该项目选择“生成”、此时会发布网站到指定的目录、生成DLL文件同vs2003一样、更新时只需上传DLL文件

我运行发现这个错,

错误 1 “aspnet_merge.exe”已退出,代码为 1。 C:"Program Files"MSBuild"Microsoft"WebDeployment"v8.0"Microsoft.WebDeployment.targets 574 9 DaishuSite

后来网上查了下。是类存在同名的缘故。

将VS 2005的工具-选项-项目和解决方案-生成并运行,设置“MSBuild 项目生成输出详细信息”,选择“详细”。再次生成Web Deployment Projects项目,“输出”框内的信息就变得非常丰富了;这样就可以查看哪里出错了


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


一下是下载地址:Visual Studio® 2008 Web Deployment Projects - RTW

http://www.microsoft.com/downloads/details.aspx?familyId=0AA30AE8-C73B-4BDD-BB1B-FE697256C459&displaylang=en

使用起来实在是方便

安装好Web Deployment Project后,只需要在web项目上点击鼠标右键点击Add Web Deployment Project对web项目创建一个合并项目(如图1)。Name是项目的名称;Location是项目存放的路径,此路径同时还存放编译成功后发布的程序。不可以将该项目存放在项目代码下,主要原因是项目编译发布时可能会出现文件冲突。

创建完成项目后您可以在vs2008看到一个新的项目,项目下没有任何文件。这个就是刚刚使用Web Deployment Project创建的合并项目。在项目上点击鼠标右键找到属性选项卡。然后找到Output Assemblies选项(如图2)。此时您就可以正常的进行编译操作了。

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

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

VS2008 发布网站时如何产生固定命名的 Dll 文件
dev.firnow.com 时间 : 2010-12-08 作者:网络 编辑:fnw 点击: 82 [ 评论 ]
-
-
VS2008 在发布网站时,bin 目录里为所有 cs 生成的 dll 文件每次都是随机命名的,像这样子的 App_Web_g2dnx-qj.dll, App_Web_s9nor8mv.dll,这样对更新 Live 站点很不方便,因为动态库名变了,涉及到每一个 aspx 文件每次都重新更改了对库的引用声明:


显示代码打印
1 <%@ page language="C#" autoeventwireup="true" inherits="_Default, App_Web_s9nor8mv" %>


即使有一个 cs 的小改动,由于生成的动态库名称不一样,造成所有的 aspx 文件都得重传一遍。如果能固定动态库的文件名,更新网站时就省事多了,只改了 cs 的话,重新生成 dll 文件,只需要替换这一个 dll 文件就 OK 啦。我们可以找到几种做法:

1. 在“发布网站”的选项中,勾选“使用固定命名和单页程序集”,每个页面对应的一个 dll,并且这个 dll 文件名是固定的(名字虽然看起来很随便),只要 aspx 文件名没变。这会生成大量的 dll 文件,实际应用中还没看到可取之处。

2. 把所有的 cs 文件放到 App_Code 目录中,这样所有的 cs 每次都生成到 App_Code.dll 动态库中。这时候的 aspx 文件第一行指令在新建后要更改为:


显示代码打印
1 <%@ Page Language="C#" AutoEventWireup="true" Inherits="_Default" %>

或者:

显示代码打印
1 <%@ Page Language="C#" AutoEventWireup="true" Inherits="_Default, App_Code" %>

这样发布的时候,对 cs 的小改动只需替换一个 App_Code.dll 文件即可。在不使用 CodeFile 属性时,VS 没理由要修改你的 aspx 文件头。

3. 第三种办法,其实与前一种十分类似,如果觉得把 aspx 对应的 cs 文件放到 App_Code 目录中有点唐突,那么为当前解决方案新加一个 Class Library 项目,例如 ClassLibrary1,把 aspx 的 cs 文件都放到这个工程中吧,相应的 aspx 文件指令就是:

显示代码打印
1 <%@ Page Language="C#" AutoEventWireup="true" Inherits="_Default" %>


或者:

显示代码打印
1 <%@ Page Language="C#" AutoEventWireup="true" Inherits="_Default, ClassLibrary1" %>


小改动替换 ClassLibrary1.dll 即可,同理在不使用 CodeFile 属性时,VS 没理由要修改你的 aspx 文件头。只有 cs 文件也要放服务器上,由 Asp.Net 来编译程序时,CodeFile 指令才是有其作为的。

4. Web Deployment Projects with Visual Studio 2008下载地址:
http://download.microsoft.com/download/0/5/b/05b4424b-5b9b-4961-8ec6-91e9f1741b2d/WebDeploymentSetup.msi,安装文件十分小, 686K。

简单操作如下:

1) 下载后直接安装,安装完后打开VS2008;

2) 在[生成]->[发布网站]下面会多出一项[Add Web Deployment Project], 也可在要发布的网站项目上点右键.直接选取[Add Web Deployment Project],弹出属性对话框后. 设置好指定名称(如 WebSite1_deploy)和存放目录(c:\target), 添加后,
以看到当前解决方案中多了一项( WebSite1_deploy), WebSite1_deploy 有很多其它属性可以设置,其中有一重要的默认选项:

Merge all outputs to a single assembly

Assembly name: 是 WebSite1_deploy.

3) 在刚添加的方案中点右键->[生成], 或者是对 WebSite1_deploy 进行 Build 都会在前面指定的目录(c:\target) 中生成可发布的文件的目录了。进到 c:\target 目录中,翻一下你就会发现你的 Web 项目中所有的 cs 文件,包括 aspx 关联的和 App_Code 中的 css 文件都编译到 WebSite1_deploy.dll 文件中去了。aspx 文件的头部是:

显示代码打印
1 <%@ page language="C#" autoeventwireup="true" inherits="Default, WebSite1_deploy" %>


只要 WebSite1_deploy.dll 文件名是固定的,aspx 的声明部分也总是不变的,所以每次只是对 cs 文件的修改补,只需换个 WebSite1_deploy.dll 文件就行啦。

相比于第二、三种方法,只需一次设置,用不着每建一个 aspx 文件对代码文件进行搬动,还得改改 aspx 文件的声明部分,而且对于 Web Site 也能构建出 DEBUG 的版本出来,所以这应该是终极的。

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

在用VS2008发布网站项目时,默认生成bin目录下的.dll文件名是随机命名的;
如果要固定生成文件名如何固定呢?
有以下两种方案:
一、每个页面的程序集分别生成对应的dll; 方法:在“发布网站”的选项中,勾选“使用固定命名和单页程序集”

二、整个站点的程序集都生成为一个文件;方法:需下载MS提供的插件,经过简单的设置可生成自定义的文件名(.dll):
Web Deployment Projects with Visual Studio 2008下载地址:
http://download.microsoft.com/download/0/5/b/05b4424b-5b9b-4961-8ec6-91e9f1741b2d/WebDeploymentSetup.msi
简单操作如下:
1.下载后直接安装,安装完后打开VS2008;
2.在[生成]->[发布网站]下面会多出一项[Add Web Deployment Project],也可在要发布的网站项目上点右键.直接选取[Add Web Deployment Project],弹出属性对话框后.设置好指定名称和存放目录添加后,可以看到当前解决方案中多了一项,有很多其它属性,就自己去设置了;
3.在刚添加的方案中点右键->[生成],就会生成相应文件和目录了

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

VS2010

VS2010可以直接创建WebApplication项目,这样发布就是一个DLL了.

VS2010可以直接创建WebApplication项目,这样发布就是一个DLL了.

VS2010可以直接创建WebApplication项目,这样发布就是一个DLL

如果是WebApplication的话可以右键Web项目 》 发布

如果是Website地方话用微软的发布插件Web Development Tool

下载地址:

http://www.microsoft.com/downloads/details.aspx?FamilyID=89f2c4f5-5d3a-49b6-bcad-f776c6edfa63&displaylang=en

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hiyavip/archive/2010/05/03/5552626.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值