网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > ASP精品代码 > 正文

使用NAnt构建asp.net项目并生成一个固定名字的动态库

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

  在 Java 项目里多用 Ant 来自动构建项目,随着惯性思维,很容易就找到了 .Net 里也有类似的构建工具 NAnt。最该死的是连 Maven 在 .net 中的对应产物 NMaven 也都有了,http://sourceforge.net/projects/nmaven/。从 Ant

  在 Java 项目里多用 Ant 来自动构建项目,随着惯性思维,很容易就找到了 .Net 里也有类似的构建工具 NAnt。最该死的是连 Maven 在 .net 中的对应产物 NMaven 也都有了,http://sourceforge.net/projects/nmaven/。从 Ant 到 NAnt 自然会有一种驾轻就熟的感觉。其实 MS 也为我们提供了相应的构建工具,如早先的 nmake 和现在的 MSBuild,它们各自用特定的构建文件,只是纯粹的项目构建工具。

  NAnt 能让你完成许多的系统操作,并且是扩展的,它能独立的完成诸如取版本、编译、打包、发布、Email 通知等一系列过程。如果再让 NAnt 结合 MSBuild 便能制作出完全自动化,一劳永逸,简单化的构建方案。比如这里的例子讲述了如何用 NAnt 构建一个 WebSite 项目,并把生成的多个动态库,像:App_Web_j_5i4fnt.dll、App_Code.dll、App_global.asax.dll 用 aspnet_merge.exe 命令合成为一个固定名字的动态库,如 Unmi.Web.dll。这样非常有利于站点的部分更新。

  关于把动态库合并为一个固定名字的文件,需要下载安装 WebDeploymentSetup.msi,比起 NAnt 的办法个人觉得略显麻烦,而且不够灵活。

  本例环境:VS2008 下的 WebSite 项目,安装 VS2008 时注意选项,因为要用到它提供的 aspnet_merge.exe 命令,通过 Windows SDK 更新也能获得它。

  NAnt 可从 http://nant.sourceforge.net 下载,解压后设定 PATH 环境变量指向到它的 bin 目录。

  具体步骤如下:

  1. 在 NAnt 的 bin/ 目录下新建一个 NAnt.bat,内容为:

  @echo off

  nant -buildfile:%1

  pause

  这样方便于在 Visual Studio 中双击执行自动构建,能直接用构建文件作为执行参数。并且在构建完成后不立即关闭命令窗口,可让您看到构建的结果,成功或失败,失败的原因。

  2. 更新方案文件中的目标目录,例如我们要生成的目录文件在 d:\target,那么打开方案文件,假定是 C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\WebSite1\WebSite1.sln,把以下两行:

  Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\FNPro\"

  Release.AspNetCompiler.TargetPath = "PrecompiledWeb\FNPro\"

  更改为:

  Debug.AspNetCompiler.TargetPath  = "d:\target"

  Release.AspNetCompiler.TargetPath  = "d:\target"

  --------------------------------------------------------------------------------

  其实也可不去改方案文件的目标目录,只需在 MSBuild 命令中用属性参数来覆盖掉方案的配置,例如下面的

  <exec program="${msbuild.exe}"   commandline='${Solution} /p:Configuration=${Configuration}' />

  加个 OutDir 配置来指定构建的输出目录

  <exec program="${msbuild.exe}"   commandline='${Solution} /p:Configuration=${Configuration};OutDir=${build.dir}\' />

  构建后你会发现,生成要发布的文件并非在 d:\target 目录中,而是 d:\target\_PublishedWebsites 目录中。目前暂没找到办法控制文件生成在 d:\target,所以后续的操作也要改动到 d:\target\_PublishedWebsites  目录中去。

  3. 建立构建文件,如我们在项目目录下建立 Project.build,内容为:

  view source

  print?

  01.<?xml version="1.0" encoding="utf-8"?>

  02.<project name="Unmi.Web" default="complete_build" description="Automatic build using NAnt">

  03.

  04.  <property name="Configuration" value="Release"/> <!-- Release Or Debug-->

  05.  <property name="assembly.version" value="1.0.0.9"/>

  06.  <property name="assembly.title" value="unmi.blogjava.net"/>

  07.  <property name="dll.filename" value="Unmi.Web.dll"/>

  08.

  09.  <property name="Solution" value='"C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\WebSite1\WebSite1.sln"'/>

  10.  <property name="build.dir" value="d:\target"/>

  11.

  12.  <property name="sdk35.dir" value="C:\WINDOWS\Microsoft.NET\Framework\v3.5"/>

  13.  <property name="sdk20.dir" value="C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727"/>

  14.

  15.  <property name="msbuild.exe" value="${sdk35.dir}/msbuild.exe"/>

  16.  <property name="aspnet_compiler.exe" value="${sdk20.dir}\aspnet_compiler.exe"/>

  17.  <property name="asp_merge.exe" value="C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\aspnet_merge.exe"/>

  18.

  19.  <target name="complete_build" description="Start build ......" depends="init,compile,assembly_info,compile,post-merge" />

  20.

  21.  <target name="init" description="Clear the output directory">

  22.    <delete dir="${build.dir}"/>

  23.    <mkdir dir="${build.dir}"/>

  24.  </target>

  25.

  26.  <target name="compile" description="Use MSbuild.exe to compile ASP.Net Project">

  27.    <exec program="${msbuild.exe}"

  28.     commandline='${Solution} /p:Configuration=${Configuration}' />

  29.  </target>

  30.

  31.  <target name="assembly_info" description="Generate a AssemblyInfo.cs with version and compile it">

  32.    <asminfo output="${build.dir}\AssemblyInfo.cs" language="CSharp">

  33.      <imports>

  34.        <import namespace="System" />

  35.        <import namespace="System.Reflection" />

  36.      </imports>

  37.      <attributes>

  38.        <attribute type="AssemblyVersionAttribute" value="${assembly.version}" />

  39.        <attribute type="AssemblyTitleAttribute" value="${assembly.title}" />

  40.      </attributes>

  41.    </asminfo>

  42.

  43.    <csc target="library" output="${build.dir}\AssemblyInfo.dll" debug="false">

  44.      <sources>

  45.        <include name="${build.dir}\AssemblyInfo.cs"/>

  46.      </sources>

  47.    </csc>

  48.  </target>

  49.

  50.  <target name="merge" description="Merge the multiple web dll into one file">

  51.    <exec program="${asp_merge.exe}"

  52.     commandline="${build.dir}  -a -r -copyattrs ${build.dir}\AssemblyInfo.dll -o ${dll.filename}"/>

  53.  </target>

  54.

  55.  <target name="post-merge" description="Delete some unused files">

  56.    <delete file="${build.dir}\Project.build"/>

  57.    <delete file="${build.dir}\AssemblyInfo.cs"/>

  58.    <delete file="${build.dir}\AssemblyInfo.dll"/>

  59.

  60.    <!-- Open the target directory -->

  61.    <exec program="explorer" commandline="${build.dir}" failonerror="false"/>

  62.  </target>

  63.

  64.  <target name="precompile-web" description="Precompile page files if necessary">

  65.    <exec program="${aspnet_compiler.exe}" commandline='-v ${Solution} "${build.dir}"' />

  66.  </target>

  67.</project>

  这是一个 xml 文件,可以在 Visual Studio 中用 XML Editor 来编辑它。几点说明:

  1. 其中指定最终生成的动态库的文件名,以及动态库的版本信息。用临时的 AssemblyInfo.cs 及编译的 AssemblyInfo.dll 来设置版本信息的。

  2. 构建目录要与前面方案文件中的 Debug.AspNetCompiler.PhysicalPath/Release.AspNetCompiler.PhysicalPath 一样,都是 d:\target

  3. 最后构建完成后,为发布方便会自动用资源管理器打开构建目录的窗口。

  你可以更深入的探究 NAnt 来自动完成单元测试、发布、或打包,进行 IIS 的操作,发邮件给相关人等操作。

  4. 执行构建

  两种方法

  1) 可以直接在控制台下执行 nant 命令,cd 到 Project.build 目录,执行 nant -buildfile:Project.build,或者 nant.bat Project.build。

  2) 在 Visual Stuio 中,右键点击 Project.build,打开 Open With 窗口,Add..,选上 NAnt.bat,并 Set As Default。这样以后每次构建只要双击那个 Project.build 即可完成。

  对于 NAnt 结合 MSBuild 的使用还可以进一步发掘,在 NAnt 的 bin\extensions\common\2.0\ 目录中有个 NAnt.MSBuild.dll 文件,应该可以此来简化上面的构建文件。

 

  • 下一篇资讯: ASPcodepage页面编码
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师