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

news/2024/5/8 19:04:17/文章来源:https://blog.csdn.net/weixin_33920401/article/details/86044786

    

组件项目: /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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_712563.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站运营直通车——7天精通SEO

为什么80%的码农都做不了架构师?>>> 网站运营直通车——7天精通SEO SEO是网络营销一门不可或缺的营销手段,从各种营销方法来看,SEO是营销成本最低 且效果最好的营销手段,因此掌握此门技术已经成为众多网络营销人…

网页设计与网站组建标准教程(2013-2015版)

为什么80%的码农都做不了架构师?>>> 网页设计与网站组建标准教程(2013-2015版) 本书全面讲述 了网站创建、网页制作基本知识、网页制作集成工具使用的方法等内容。通过本书的学习,可使学生 掌握构建网站的基本知…

一次外网打不开网站的故障总结

先说一下公司网站的架构,公司的前端用KeepalivedLVS做的负载均衡,后面跟的是WEB服务器,WEB和IMG独立,IMG采用NFS存储服务器,IMG前端用Squid做的缓存。整个网站前面用的是金盾的防火墙,网站的整个架构并不复杂。在9月22…

电脑怎么打字切换中文_五个练习打字的网站,让你的速度飞起

相信现在还是有很多人打字靠『二指禅』,但这种打字方式效率还是有点低下。如果想尽快提升效率,还是尽快学会全键位盲打吧。如果你在网上问,到底该怎么提高打字速度?常见的回答都是这样,在QQ上找人聊天就好,…

Win7系统下网站发布IIS配置

*本帖为个人收集贴,所有版权归:西门的后花园 http://ons.me*Technorati 标记: IIS,网站,发布,配置一、首先是安装IIS。打开控制面板,找到“程序与功能”,点进去二、点击左侧“打开或关闭Windows功能”三、找到“Internet 信息服务…

wpf esc key 检测不到_爬虫笔记之requests检测网站编码方式(zozo.jp)(碎碎念) - CC11001100...

发现有些网站的编码方式比较特殊,使用requests直接请求拿是得不到正确的文本的,比如这个网站:当使用requests访问网站,使用方式取响应文本的时候,会发现得到的是奇怪的内容:#!/usr/bin/env python3 # encod…

创建MOSS网站下的新闻

MOSS新闻中心的原理,跟普通的通知列表是不同的,MOSS新闻中每一条新闻即为一张页面,页面存储在站点的Pages文档库中。手工创建新闻 网站操作,下选创建页面 如下的界面如下:(点击图片查看清晰图)在输入框中输入相应的内容&#xff0…

PerfMap – 显示前端网站性能的热力图插件

PerfMap 是用来分析前端性能,基于资源定时 API 生成网页资源加载的前端性能热图。热图的颜色和第一个毫秒值指示在什么时候页面的图像加载完毕,这是用户体验的一个很好的指标。括号中的第二个值是浏览器加载特定图像的时间。 Github主页 插件下载 您…

Microsoft Azure WebSite创建网站

Microsoft Azure WebSite是Microsoft Azure中PaaS平台既服务到一个重要组件,WebSite具有以下特点,方便我们WEB部署和上线发布l 入门简单,开始简单,可以按照你的想法扩展,无任何的困难。l 编码容易,可以使用…

php手机网站支付宝_PHP实现支付宝手机网站支付功能

PHP实现支付宝手机网站支付功能的方法:首先开通支付宝商家中心里面的手机网站支付;然后进入开发者中心,获取到APPID;接着去文档中心下载“DEMO”;最后将“demo”配置到项目中即可。PHP实现支付宝手机网站支付功能1.开通…

php 系统找不到指定的路径.,PHP网站(windows2003服务器 IIS6)提示:系统找不到指定的路径。...

今天早上起来一看其它某php网站(下称:A站),直接就提示:“系统找不到指定的路径。”,其它的什么也没有。输入网站的各种网址都是这样。回想一下近期的操作,由于服务器的PHP版本太低,自己下载了下个phpStudy(…

想让自己的网站变得精致吗?那就进来看看吧:跟随鼠标的天使

跟随鼠标的天使 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible"…

Tomcat发布自己的一个web网站

Tomcat发布自己的一个web网站 将自己写的网站&#xff0c;放到服务器&#xff08;Tomcat&#xff09;中指定的web应用文件夹&#xff08;webapps&#xff09;下&#xff0c;即可以访问 850)]

配置网站之后500.19错误

HTTP错误 500.19 - Internet Server Error 无法访问请求的页面&#xff0c;因为该页的相关配置数据无效。IIS&#xff0c;出现这个错误怎么回事&#xff1f;-------------------------------------------------------------------------------- ------------------------------…

Java爬虫实战(一):抓取一个网站上的全部链接

前言&#xff1a;写这篇文章之前&#xff0c;主要是我看了几篇类似的爬虫写法&#xff0c;有的是用的队列来写&#xff0c;感觉不是很直观&#xff0c;还有的只有一个请求然后进行页面解析&#xff0c;根本就没有自动爬起来这也叫爬虫&#xff1f;因此我结合自己的思路写了一下…

你的网站首页完成最重要的使命了吗?

2019独角兽企业重金招聘Python工程师标准>>> 主页要承担的作用&#xff1a;最关键的问题&#xff1a;想象一个在高速路上经过的车主&#xff0c;一闪而过的时间里&#xff0c;如何让他明白前面这块广告牌在说什么&#xff1f;文末有我自己的答案。 背景&#xff1a;…

大型网站架构系列:电商网站架构案例(2)

转自&#xff1a;itfly8大型网站架构系列&#xff1a;电商网站架构案例(2) 电网网站架构案例系列的第二篇文章。主要讲解网站架构分析&#xff0c;网站架构优化&#xff0c;业务拆分&#xff0c;应用集群架构&#xff0c;多级缓存&#xff0c;分布式Session。 五、网站架构分析…

开发微信网页版登录(像segmentfault 网站那样登录)

2019独角兽企业重金招聘Python工程师标准>>> 一开始做的微信登录是这样的:点击微信登录,页面跳到扫面二维码那个页面,扫描并同意之后,回跳到自己给的redirect_url 那里. 很想做成 segmentfault 网站那样,感觉用户体更加好,如下图: 一直不知道该怎么去做..直到今天,…

网站开发流程以及HTML5简介(七)

2019独角兽企业重金招聘Python工程师标准>>> 第八大原因&#xff1a;Doctype 没错&#xff0c;就是doctype&#xff0c;没有更多内容了。是不是非常简答&#xff1f;不需要拷贝粘贴一堆无法理解的代码&#xff0c;也没有多余的head标签。最大的好消息在于&#xff0…

基于 Vue 的轻量级静态网站生成器 VuePress

Vue.js 的创始人尤雨溪大大在 twitter 上发布了一个全新的基于 Vue 的静态网站生成器-&#xff0c;这对于广大 Vue 爱好者来说无疑是一个好消息&#xff01; 什么是VuePress VuePress由两部分组成&#xff1a;一个基于Vue的轻量级静态网站生成器&#xff0c;以及为编写技术文…