课题起因: 目前我们团队使用visual studio 2013开发asp.net项目, 使用tfs2013 做源码管理, 每天早上手动发布项目文件包,复制到测试服务器的站点文件夹下覆盖老文件,用此方式发布系统,甚至一天数次。低效费力。
 
课题目的:利用 tfs 做自动发布asp.net站点,无需人工干预,能够在代码签入时或定时进行asp.net项目发布。
 
研究结果:初步成功
 
自动发布系统配置过程:
 
  • 环境检查
  1. 客户端: visual studio 2013 开发环境 ,能够正常连接源码服务器( tfs 2013 ),正常获取签入asp.net项目源码
  2. 源码服务器( tfs 2013 )
  3. asp.net 服务器(IIS) ,能够正常访问,能够使用项目文件包覆盖站点文件夹下老文件,并正常访问
  • 配置web deploy 发布
  1. IIS安装配置“管理服务”
    参考这篇文章的第二部分 :图文详解远程部署ASP.NET MVC 5项目
  2. 下载并安装 web deploy ,建议使用“完全安装”。 注意安装顺序:先“管理服务”后 “web deploy”,如果反了, “web deploy”需要最后再运行安装程序使用修改功能,最终做到 “完全安装”。
  3. 测试 web deploy,使用 https://IP:8172/MsDeploy.axd 这个地址测试 web
    deploy ,如果弹出用户名密码对话框,则说明 “ web deploy”安装成功。 不必等待看到结果。
  4. 使用 visual studio 2013 asp.net项目 中的web deploy发布,成功发布asp.net项目到IIS的asp.net站点。  
     参考这篇文章的第三部分:图文详解远程部署ASP.NET MVC 5项目  。
    此步骤至关重要,是继续下一步工作的基石。注意:认真关注以下图片中的pubxml发布配置文件,这是发布系统的关键。
  5. 添加发布时需要添加和排除的文件的配置并测试。
    例如:排除web.config文件和fonts文件夹: 
    <ExcludeFilesFromDeployment> 
    web.config 
    </ExcludeFilesFromDeployment> 
    <ExcludeFoldersFromDeployment> 
    fonts 
    </ExcludeFoldersFromDeployment> 
    完整 pubxml 文件如下:
    <?xml version="1.0" encoding="utf-8"?> 
    <!-- 
    您 Web 项目的发布/打包进程将使用此文件。您可以通过编辑此 MSBuild 文件 
    来自定义该进程的行为。若要了解与此相关的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=208121。 
    --> 
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <WebPublishMethod>MSDeploy</WebPublishMethod> 
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> 
    <LastUsedPlatform>Any CPU</LastUsedPlatform> 
    <SiteUrlToLaunchAfterPublish>http://192.168.61.131:81</SiteUrlToLaunchAfterPublish> 
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> 
    <ExcludeApp_Data>False</ExcludeApp_Data> 
    <MSDeployServiceURL>192.168.61.131</MSDeployServiceURL> 
    <DeployIisAppPath>test1</DeployIisAppPath> 
    <RemoteSitePhysicalPath /> 
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer> 
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod> 
    <EnableMSDeployBackup>True</EnableMSDeployBackup> 
    <UserName>iispeiyu</UserName> 
    <_SavePWD>True</_SavePWD> 
    <PublishDatabaseSettings> 
    <Objects xmlns=""> 
    <ObjectGroup Name="DefaultConnection" Order="1" Enabled="False"> 
    <Destination Path="" /> 
    <Object Type="DbDacFx"> 
    <PreSource Path="Data
    Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WebApplication4-0798e767-bdbb-48c0-b104-8b9c14b6e40c.mdf;Initial

    Catalog=aspnet-WebApplication4-0798e767-bdbb-48c0-b104-8b9c14b6e40c;Integrated
    Security=True" includeData="False"
    /> 
    <Source
    Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac"
    dacpacAction="Deploy" /> 
    </Object> 
    <UpdateFrom Type="Web.Config"> 
    <Source MatchValue="Data Source=(LocalDb)\v11.0;Initial
    Catalog=aspnet-WebApplication4-0798e767-bdbb-48c0-b104-8b9c14b6e40c;Integrated

    Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-WebApplication4-0798e767-bdbb-48c0-b104-8b9c14b6e40c.mdf"
    MatchAttributes="$(UpdateFromConnectionStringAttributes)"
    /> 
    </UpdateFrom> 
    </ObjectGroup> 
    </Objects> 
    </PublishDatabaseSettings> 
    <!-- 排出部分文件或文件夹 --> 
    <ExcludeFilesFromDeployment> 
    web.config 
    </ExcludeFilesFromDeployment> 
    <ExcludeFoldersFromDeployment> 
    fonts 
    </ExcludeFoldersFromDeployment> 
    </PropertyGroup> 
    <ItemGroup> 
    <MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String"> 
    <UpdateDestWebConfig>False</UpdateDestWebConfig> 
    </MSDeployParameterValue> 
    </ItemGroup> 
    </Project>
    参考技术文献:用于
    Visual Studio 和 ASP.NET 的 Web 应用程序项目部署常见问题

  • 配置tfs 自动发布
  1. tfs安装“生成配置”
  2. 无需任何设置
  3. tfs所在机器安装 web deploy
  4. 复制 visual
    studio 2013 所在电脑的“C:\Program Files
    (x86)\MSBuild\Microsoft\VisualStudio”文件夹,到 tfs所在机器相同目录。可事先备份老目录。如果不进行此步操作,会出现缺失文件的错误。
  • 配置自动生成配置文件
    打开 visual studio 2013 的 asp.net 项目(团队项目),点击“生成”。 以下是重要部分截图。

    上一张图片中 MSBuild 参数 : /p:DeployOnBuild=True;PublishProfile=webapp01;AllowUntrustedCertificate=true;Password=pwd
    该参数是自动发布的关键部分 。 PublishProfile=webapp01 是 pubxml 文件的名称 ,见本文第一张图片,Password=pwd 是 iis 发布用户的密码, 用户名 就在 pubxml 文件中。

  • 至此, 所有配置完成。
  • 测试
    修改项目文件并签入,系统会自动编译发布。
 
扩展知识:
如果想在编译发布前执行单元测试,就不能在“过程”中使用“默认模板” ,而要使用 自定义生成过程模板

tfs 2013 利用 web deploy 完成asp.net站点自动发布的更多相关文章

  1. Jenkins持续集成(下)-Jenkins部署Asp.Net网站自动发布

    环境:Windows 2008 R2.Jenkins2.235.1.Visual Studio 2017: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成S ...

  2. vs 利用web deploy发布 常见问题解决

    1. 下载并安装 web deploy, 安装时选择自定义,选择全部安装 https://www.iis.net/downloads/microsoft/web-deploy  2. 确保iis的管理 ...

  3. 自动发布-asp.net自动发布、IIS站点自动发布(集成SLB、配置管理、Jenkins)

    PS:概要.背景.结语都是日常“装X”,可以跳过直接看自动发布 环境:阿里云SLB.阿里云ECS.IIS7.0.Jenkins.Spring.Net 概要 公司一个项目从无到有,不仅仅是系统从无到有的 ...

  4. 利用web工具splinter模拟登陆做自动签到

    首先,我需要的工具和组件有: Chrome浏览器 浏览器驱动ChromeDriver Python 3.5 Web应用测试工具Splinter 代码部分: from splinter import B ...

  5. 配置 Web Deploy 的步骤 -摘自网络

    今天的文章里,我会介绍Microsoft Web Deploy—一个采用全面的发布和部署机制的免费服务器技术.Web Deploy不仅仅让你发布文件—还可以部署数据库结构/数据,运行变更的数据库脚本, ...

  6. [ASP.net教程]IIS服务器 远程发布(Web Deploy)配置

    asp.net 网站有三种常用的发布方式:分别是拷贝开发机上发布好的文件到服务器硬盘上.打包成安装程序到服务器上安装.通过Visual Studio 开发平台远程发布到服务器. 在asp.net网站的 ...

  7. asp.net core 使用 web deploy 部署网站

    1.添加角色和功能中 web服务器(iis)->管理工具->管理服务  打勾并安装 2.安装 web deploy,也可以通过 web平台安装程序 来安装,搜索web deploy就可以了 ...

  8. ASP.NET Core采用Web Deploy方式发布到 Windows Server 2012 IIS上

    小白一枚,租个服务器,发布下网站,满足下好奇心,讲的粗糙,请大家谅解哈~ 1.配置服务器环境.这部分网上教程比较多. (1)开启IIS,参考其他博客的,担心的话,将Web服务器(IIS)全选哈~ (2 ...

  9. 【初码干货】在Window Server 2016中使用Web Deploy方式发布.NET Web应用的重新梳理

    在学习和工作的过程中,发现很多同事.朋友,在做.NET Web应用发布的时候,依然在走 生成-复制到服务器 这样的方式,稍微高级一点的,就是先发布到本地,再上传到服务器 这种方式不仅效率低下,而且不易 ...

随机推荐

  1. C# Note29: Close()和Dispose()的区别

    待更! 深入解析Close()和Dispose()的区别

  2. placeholder解决兼容各种IE浏览器的方法

    <input id="search" type="text" class="box" class="inputText&qu ...

  3. MySQL系列:索引基本操作(4)

    1. 索引简介 索引是一种特殊的数据库结构,可以用来快速查询数据中的特定记录. MySQL中索引包括:普通索引.唯一性索引.全文索引.单列索引.多列索引和空间索引等. 1.1 索引定义 索引由数据库表 ...

  4. PHP金额工具类之将阿利伯数字转换为大写中文数字

    1.将阿拉伯数字转换为中文大写数字 <?php namespace core\components; class PriceHelper extends \yii\base\Component{ ...

  5. 一、.NET Core MVC 项目结构模板

    一.图文描述,开口干 二.文件结构:  wwwroot 首先,Razor Pages项目中多了一个wwwroot的文件夹,这个文件夹中,主要存放网站的静态资源,如css,网站图片资源文件,js文件,三 ...

  6. 转载 -- jquery easyui datagrid 动态表头 + 嵌套对象属性展示

    代码功能: 1.datagrid 的表头由后台生成,可以配置在数据库 2.datagrid 的列绑定数据 支撑嵌套对象 $(function() { var columns = new Array() ...

  7. JVM方法调用过程

    JVM方法调用过程 重载和重写 同一个类中,如果出现多个名称相同,并且参数类型相同的方法,将无法通过编译.因此,想要在同一个类中定义名字相同的方法,那么它们的参数类型必须不同.这种方法上的联系就是重载 ...

  8. 第二十二天 logging hashlib re 模块

    今日内容 logging功能完善的日志模块 re正则表达式模块主要处理字符串匹配 查找 搜索给你一个字符串 要从中找到你需要的东西 爬虫大量使用 hashlib hash算法相关的库 算法怎么算不需要 ...

  9. 洛谷3704 [SDOI2017] 数字表格 【莫比乌斯反演】

    题目分析: 比较有意思,但是套路的数学题. 题目要求$ \prod_{i=1}^{n} \prod_{j=1}^{m}Fib(gcd(i,j)) $. 注意到$ gcd(i,j) $有大量重复,采用莫 ...

  10. 【XSY1642】Another Boring Problem 树上莫队

    题目大意 给你一棵\(n\)个点的树,每个点有一个颜色\(c_i\),每次给你\(x,y,k\),求从\(x\)到\(y\)的路径上出现次数第\(k\)多的颜色的出现次数 \(n,q\leq 1000 ...