如何让vs2005在发布站点时在bin下生成自定义的名称.dll

在用VS2005发布网站项目时,默认生成bin目录下的.dll文件名是随机命名的;如果要固定生成文件名如何固定呢?有以下两种方案:

一、每个页面的程序集分别生成对应的dll;

方法:在“发布网站”的选项中,勾选“使用固定命名和单页程序集”

二、整个站点的程序集都生成为一个文件;

方法:需下载MS提供的插件,经过简单的设置可生成自定义的文件名(.dll):

Web Deployment Projects with Visual Studio 2005
下载地址:http://download.microsoft.com/download/c/c/b/ccb4877f-55f7-4478-8f16-e41886607a0e/WebDeploymentSetup.msi
MSDN说明:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/web_deployment_projects.asp

简单操作如下:
1.下载后直接安装,安装完后打开VS2005;
2.在[生成]->[发布网站]下面会多出一项[Add Web Deployment Project],也可在要发布的网站项目上点右键.直接选取[Add Web Deployment Project],弹出属性对话框后.设置好指定名称和存放目录添加后,可以看到当前解决方案中多了一项,有很多其它属性,就自己去设置了;
3.在刚添加的方案中点右键->[生成],就会生成相应文件和目录了

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

在Visual Studio 2003下开发网站的都知道ASP.NET 1.1网站生成后都是一个唯一命名的程序集(项目名称.DLL),但是这种情况在Visual Studio 2005的网站开发中不见了。Visual Studio 2005给我们提供了“发布网站”这样“方便”的功能,不用像以前一样COPY的部署,但是采用其“发布网站”的功能,会在站点的BIN目录中产生App_Code.compiled,App_Code.dll,App_Web_xxxxxx.dll,项目名称.dll等等这样的程序集,如果不采用预编译的方式那么产生的文件会更加的多,因为很多都是随机命名也没有什么规律可言;这样会给那些想COPY更新的人带来不便,因为原来的文件不能被覆盖,需要先删除再COPY;有很多时候可能就是更新了后台代码,直接生成项目或是WEB的程序集,像以前一样直接覆盖DLL的方式也很简单。下面将介绍我采用Microsoft Web Deployment Projects在Visual Studio 2005中生成唯一程序集的方法。

先下载Microsoft Web Deployment Projects,地址是:http://msdn2.microsoft.com/en-us/asp.net/aa336619.aspx

声明一下,我用的VS2005是Team suit版本的。安装后在“生成”和WEB项目的上下文菜单看到“Add Web Deployment Project…”,好了,现在在解决方案中点你的网站项目名称,右键,添加一个Web Deployment Project项目,起一个名称,这个名称就是将来编译后生成的程序集名称,默认的名称“当前项目名称_deploy”(我的项目是Web_deploy),这样操作后项目解决方案中会多一个项目Web_deploy,然后我们对Web_deploy进行操作就可以达到我们的目的了。右键打开Web_deploy项目的属性页面,察看“配置属性”,先看”Compilation”选项:Compilation中的Output Folder设置项目输出路径,这个可以默认。

我们把Generate debug information和Allow this precompiled site to be updatable两项的对勾打上。Output Assemblies中的四大选项:

1. Merge all outputs to a single assembly-所有输出都编译成一个程序集(参数:程序集名称)

    1.1   Treat as library component (remove the App_Code.compiled file)-App_Code视为类库(删除App_Code.compiled文件)2. Merge each individual folder output to its own assembly-WEB项目中单独的目录会编译到一个程序集中(参数:程序集前缀)3. Merge all pages and control outputs to a single assembly-所有页面控件编译到一个程序集中(参数:程序集名称)4. Create a separate assembly for each page and control output-为每一个页面和控件创建程序集Signing使用key文件建立强命名空间的程序集这里我们只需要设置“1. Merge all outputs to a single assembly-所有输出都编译成一个程序集(参数:程序集名称)”(我设置的是Web_deploy)和“1.1 Treat as library component (remove the App_Code.compiled file)-App_Code视为类库(删除App_Code.compiled文件)”(这个对勾要打上)。这样,我们再把程序的页面继承关系改一下就可以发布网站了!举个例子:网站中每个ASPX文件的PAGE我们这样改:

Index.aspx

<%@ page Language=”C#” MasterpageFile=”~/MasterPage.master” AutoEventWireup=”true” CodeFile=”Index.aspx.cs” Inherits=”wjj.Web.Index” Title=”首页” %>

注意其中的Inherits=”wjj.Web.Index”,wjj.Web是我网站的我自己定义的命名空间。Index.aspx.cs也要加上命名空间
namespace wjj.Web
{
    public partial class Index : System.Web.UI.Page
    {
               protected void Page_Load(object sender, EventArgs e)       {        }
     }
}

好了,点项目Web_deploy右键—重新生成就可以了,终于把问题解决了!Index.aspx生成后的PAGE如下:

<%@ page language=”C#” masterpagefile=”~/MasterPageDefault.master” autoeventwireup=”true” inherits=”wjj.Web.Index, Web_deploy” title=”首页” %>

发表评论

您的电子邮箱地址不会被公开。