发布一个MsBuild任务组件-可用于同时发布多个网站
组件项目: /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命令行中使用该组件,步骤如下:
- 将该组件的Publishers.dll文件和其依赖的FileUntility.dll拷贝到.sln相同目录
- 在.sln相同目录创建一个publisersample.msbuild文件,根据我机器上的项目路径,在publisersample.msbuild中添加如下代
- 制作一个.bat文件,命名为执行演示.bat,填写如下代码
- 执行执行演示.bat,效果如图:
- 查看Sample1_PubliserDir和Smaple2_PubliserDir,发现网站已经被成功发布.效果如图
5. 项目文件和演示项目
组件项目: /Files/jillzhang/Publishers.rar
演示项目: /Files/jillzhang/PubliserSample.rar
发布一个MsBuild任务组件-可用于同时发布多个网站相关推荐
- 发布一个验证码生成组件
该组件只负责验证码图片的生成,对于如何在WEB或其他地方使用就根据自己情况来使用. 下载 WEB演示地址 WEB下的效果图
- iOS之深入解析CocoaPods的GitLab CI与组件自动化构建与发布
一.Gitlab CI/CD 简介 ① GitLab GitLab 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或 ...
- python自定义函数求差_[VBA]发布一个计算桩号之差的Excel自定义函数(VBA)
这是一个可以计算桩号之差(也就是得到长度)的Excel(或WPS)扩展函数,可以减少工程师在统计工程量时的工作量. 该函数具有一定的通用性.可以在MS Office和金山WPS上使用. 文末会给出使用 ...
- vue 生成发布包_年轻人如何从0到1封装发布一个vue组件__Vue.js
封装发布组件是前端开发中非常重要的能力,通过对常用组件的封装可以提升团队开发的效率,避免重复劳作且不方便维护.好的组件的抽象和封装能让组件得到更广泛和多环境兼容的应用. 本文讲述了如何一步步从0到1封 ...
- 如何封装并发布一个属于自己的ui组件库
以前就一直有个想法自己能不能封装一个类似于elementui一样的组件库,然后发布到npm上去,毕竟前端说白了,将组件v上去,然后进行数据交互.借助这次端午,终于有机会,尝试自己去封装发布组件库了 我 ...
- vue 悬浮按钮组件_如何搭建和发布一个 Vue 组件库
如今,许多组件库风靡一时,使得我们能够便捷地保持一个应用一致的外观和体验. 我至今已经使用过许多不同的组件库,不过使用组件和深入了解构建组件的过程还是有很大不同的. 我想要更深入地理解组件库的构建过程 ...
- vue 移动端头像裁剪_vue头像上传裁剪组件_一个漂亮的Vue组件,用于图像裁剪和上传...
vue头像上传裁剪组件 vue-image-crop-upload (vue-image-crop-upload) A beautiful vue component for image crop a ...
- 发布一个用于WinCE的矢量图控件
发布一个在wince操作系统下,采用.net compact framework 1.0 ( c#)开发的矢量图控件,我于2007年3月份集中一个月的经历完成了它.当然,它的前身是2005年12月我写 ...
- 第九节:掌握vue的另一个核心:组件
连续几天没空写文章了,最近忙着弄一个小程序,经过几天的coding,终于在今天下午提交审核,等待审核中.... 大家久等了,是时候接着学习我们的vue基础系列教程了,第一节我们就介绍过,vue有两大核 ...
最新文章
- mongodb索引生成HTML页面,MongoDB高级索引
- 深度学习之好的博客文章
- Windows异常学习笔记(二)—— 内核异常处理流程用户异常的分发
- 瀚思推出国内首个企业级大数据安全分析平台
- mall整合RabbitMQ实现延迟消息
- nodejs html引用js_nodejs做出最简单的网页服务端。【501】
- 公司支付给临时工的劳务费,无法取得发票如何做账?
- 百度微软云服务器地址,win10的ie浏览器默认地址被百度劫持
- Request的getParameter和getAttribute方法的区别
- 洛谷OJ测评常见的错误
- 【指纹识别】基于模板匹配算法实现教室指纹打卡系统含Matlab源码
- 免费使用中国知网/查看外文文献—浙江图书馆
- 编译原理 自下而上分析题型
- 如何禁用WordPress程序REST API功能且移除wp-json链接
- Spring Boot优缺点总结
- nyoj892买牛奶
- UE4数字孪生 OD线开发浅析
- creo扫描选择多条链作为轨迹_Proe/Creo创建鸟巢型曲面的实例新手必练
- 陈硕《网络编程实战》03 课程内容大纲【稿】
- LocalizedResourceName