组件项目: /Files/jillzhang/Publishers.rar

演示项目: /Files/jillzhang/PubliserSample.rar

在Vs 2005 没有打Sp1的时候,可以用aspnet_compiler.exe来实现发布网站的目的,它是一个命令行工具,在进行持续化集成的时候,很方便,可打了Sp1之后,虽然也能发布网站

,但我在vs安装组件中找了遍,也没发现发布网站用的是哪个exe,没有命令行工具,持续集成就成了问题,自己动手,丰衣足食,下面介绍一下该组件的功能和特点

1. 本组件的原本用途

在持续化集成的过程中,当MsBuild.exe编译成功之后,用此组件自动发布网站。 一次支持多个网站

2. 实现原理

要想能和MsBuild进行交互,最好的办法就是将该组件作为MsBuild的一个任务,.net framework已经为我们准备好了用于创建MsBuild的基类Microsoft.Build.Utilities.Task,继承它便可以实现一个自定义MsBuild任务,在进行编译的时候,执行自己想要的操作。我这个组件就是根据配置信息,从编译好的网站文件夹中拷贝指定格式的文件到发布目录,从而达到发布网站的目的。只要更改配置,能适用于Vb.Net和C#或者其他语言开发的任何网站项目。

3. 实现方法

首先,我们先来看一下Microsoft.Build.Utilities.Task这个类的用法:

实现一个自定义得MsBuild任务需在Microsoft.Build.Utilities.Task的实现类中重写Execute方法,该方法的原型为

public abstract Execute ()
同时,MsBuild任务支持自定义属性,实现方法和普通类属性相同,而如果属性是必须的话,可以应用[Required]属性(Attribute)。 

本组件需要的属性如下

属性名称

数据类型

是否必须

备注

SourceDir

String

网站目录,可以指定多个网站的目录名,每个目录名之间用,隔开

TargetDir

String

发布目录,可以指定多个网站的发布目录,且数目必须和SourceDir中的网站目录一致,每个目录之间用,隔开,顺序也对应SourceDir的配置

ExcluedStr

String

用于指示在发布的时候,不被拷贝文件的后缀,可以包含多个后缀,用,隔开

声明这些属性的代码为:

在Execute方法实现对文件的拷贝工作,在组件项目中能查到

该组件能将执行结果和执行过程通过Log记录下来。

4. 使用方法

为了演示该组件的效果,我们创建一个名为PubliserSample.sln的解决方案,方案中包括两个网站,Sample1和Sample2,结构如下图所示:

我们的目的是在编译的同时将这两个网站分别发布到目录Sample1_PubliserDir和Smaple2_PubliserDir中

我们在这里只演示在msbuild.exe命令行中使用该组件,步骤如下:

  1. 将该组件的Publishers.dll文件和其依赖的FileUntility.dll拷贝到.sln相同目录
  2. 在.sln相同目录创建一个publisersample.msbuild文件,根据我机器上的项目路径,在publisersample.msbuild中添加如下代
      
  3. 制作一个.bat文件,命名为执行演示.bat,填写如下代码  

  1. 执行执行演示.bat,效果如图:

  1. 查看Sample1_PubliserDir和Smaple2_PubliserDir,发现网站已经被成功发布.效果如图

5. 项目文件和演示项目

组件项目: /Files/jillzhang/Publishers.rar

演示项目: /Files/jillzhang/PubliserSample.rar

发布一个MsBuild任务组件-可用于同时发布多个网站相关推荐

  1. 发布一个验证码生成组件

    该组件只负责验证码图片的生成,对于如何在WEB或其他地方使用就根据自己情况来使用. 下载 WEB演示地址 WEB下的效果图

  2. iOS之深入解析CocoaPods的GitLab CI与组件自动化构建与发布

    一.Gitlab CI/CD 简介 ① GitLab GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或 ...

  3. python自定义函数求差_[VBA]发布一个计算桩号之差的Excel自定义函数(VBA)

    这是一个可以计算桩号之差(也就是得到长度)的Excel(或WPS)扩展函数,可以减少工程师在统计工程量时的工作量. 该函数具有一定的通用性.可以在MS Office和金山WPS上使用. 文末会给出使用 ...

  4. vue 生成发布包_年轻人如何从0到1封装发布一个vue组件__Vue.js

    封装发布组件是前端开发中非常重要的能力,通过对常用组件的封装可以提升团队开发的效率,避免重复劳作且不方便维护.好的组件的抽象和封装能让组件得到更广泛和多环境兼容的应用. 本文讲述了如何一步步从0到1封 ...

  5. 如何封装并发布一个属于自己的ui组件库

    以前就一直有个想法自己能不能封装一个类似于elementui一样的组件库,然后发布到npm上去,毕竟前端说白了,将组件v上去,然后进行数据交互.借助这次端午,终于有机会,尝试自己去封装发布组件库了 我 ...

  6. vue 悬浮按钮组件_如何搭建和发布一个 Vue 组件库

    如今,许多组件库风靡一时,使得我们能够便捷地保持一个应用一致的外观和体验. 我至今已经使用过许多不同的组件库,不过使用组件和深入了解构建组件的过程还是有很大不同的. 我想要更深入地理解组件库的构建过程 ...

  7. vue 移动端头像裁剪_vue头像上传裁剪组件_一个漂亮的Vue组件,用于图像裁剪和上传...

    vue头像上传裁剪组件 vue-image-crop-upload (vue-image-crop-upload) A beautiful vue component for image crop a ...

  8. 发布一个用于WinCE的矢量图控件

    发布一个在wince操作系统下,采用.net compact framework 1.0 ( c#)开发的矢量图控件,我于2007年3月份集中一个月的经历完成了它.当然,它的前身是2005年12月我写 ...

  9. 第九节:掌握vue的另一个核心:组件

    连续几天没空写文章了,最近忙着弄一个小程序,经过几天的coding,终于在今天下午提交审核,等待审核中.... 大家久等了,是时候接着学习我们的vue基础系列教程了,第一节我们就介绍过,vue有两大核 ...

最新文章

  1. mongodb索引生成HTML页面,MongoDB高级索引
  2. 深度学习之好的博客文章
  3. Windows异常学习笔记(二)—— 内核异常处理流程用户异常的分发
  4. 瀚思推出国内首个企业级大数据安全分析平台
  5. mall整合RabbitMQ实现延迟消息
  6. nodejs html引用js_nodejs做出最简单的网页服务端。【501】
  7. 公司支付给临时工的劳务费,无法取得发票如何做账?
  8. 百度微软云服务器地址,win10的ie浏览器默认地址被百度劫持
  9. Request的getParameter和getAttribute方法的区别
  10. 洛谷OJ测评常见的错误
  11. 【指纹识别】基于模板匹配算法实现教室指纹打卡系统含Matlab源码
  12. 免费使用中国知网/查看外文文献—浙江图书馆
  13. 编译原理 自下而上分析题型
  14. 如何禁用WordPress程序REST API功能且移除wp-json链接
  15. Spring Boot优缺点总结
  16. nyoj892买牛奶
  17. UE4数字孪生 OD线开发浅析
  18. creo扫描选择多条链作为轨迹_Proe/Creo创建鸟巢型曲面的实例新手必练
  19. 陈硕《网络编程实战》03 课程内容大纲【稿】
  20. LocalizedResourceName

热门文章

  1. Zabbix监控Redis状态(内含Zabbix、Redis福利资料)
  2. Win10更新提示0x8024402f错误的解决方法
  3. Linux系统性能监控工具Glances
  4. 关于JS特效的兼容问题。
  5. 【Linux】centos7安装bcp报错
  6. 线程的异常捕获与线程池的异常捕获
  7. vs code编辑php时,突然显示红色波浪线的错误提示的解决方案
  8. php的Allowed memory size of 134217728 bytes exhausted问题解决办法
  9. 错误-trustAnchors参数必须为非空
  10. 我们如何制作xkcd样式图?