tfs 2013 利用 web deploy 完成asp.net站点自动发布

课题起因: 目前我们团队使用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 文件中。

  • 至此, 所有配置完成。
  • 测试
    修改项目文件并签入,系统会自动编译发布。

扩展知识:

如果想在编译发布前执行单元测试,就不能在“过程”中使用“默认模板” ,而要使用 自定义生成过程模板

原文地址:https://www.cnblogs.com/hnsongbiao/p/9063784.html

时间: 2024-08-08 08:01:11

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

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

首先,我需要的工具和组件有: Chrome浏览器 浏览器驱动ChromeDriver Python 3.5 Web应用测试工具Splinter 代码部分: from splinter import Browserimport time def login():    b = Browser(driver_name="chrome")    b.visit("签到连接地址")    b.fill("qq","用户名")    b

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

今天的文章里,我会介绍Microsoft Web Deploy—一个采用全面的发布和部署机制的免费服务器技术.Web Deploy不仅仅让你发布文件—还可以部署数据库结构/数据,运行变更的数据库脚本,设置安全访问控制列表等等.所有这些部署步骤都可以用Visual Studio自动完成. 本篇文章将提供一个循序渐进的教程,教你如何在一台Web服务期上安装和启用Web Deploy.接着我们演示如何使用Visual Studio通过Web Deploy直接(将文件)发布到服务器上,以及如何使用Vis

微软ASP.NET站点部署指南(5):部署到IIS上作为测试环境

1.  综述 开发程序的时候,通常我们是在Visual Studio 里测试,默认使用的是Visual Studio Development Server(Cassini),使用这个可以让我们开发测试工作更容易,但是在IIS上可能不一定能够正常工作.所以,结果可能是在Visual Studio 里运行正常,但是一旦部署到IIS上就会出错. 你可以通过下面一些方法来测试确保你的程序没问题: 开发的时候,使用IIS Express或者正式版IIS代替默认的Visual Studio Developm

ASP.NET Web Deploy 发布项目二次开发发布编译出错原因

原先的ASP.NET 转换为 Web Deploy 项目后, 将所有的.CS文件打成一个包, 页面aspx文件保留, 项目开发人员拿到之后, 进行build, 开发没有问题, 但是publish WebSite的时候, 会出错. 错误:  Publication (web): 未将对象引用设置到对象的实例. 没有任何其他相关信息 , 打开aspnet_compiler.exe 的errorstack 选项后, 发现报错堆栈: error ASPRUNTIME: 未将对象引用设置到对象的实例. [

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

小白一枚,租个服务器,发布下网站,满足下好奇心,讲的粗糙,请大家谅解哈~ 1.配置服务器环境.这部分网上教程比较多. (1)开启IIS,参考其他博客的,担心的话,将Web服务器(IIS)全选哈~ (2)安装WebPI工具: https://www.microsoft.com/web/downloads/platform.aspx,用作下载Web deploy. (3)安装Web deploy: 打开WebPI工具,搜索Web deploy.(先安装Web deploy3.5,再安装Web dep

IIS服务器 远程发布(Web Deploy)配置 VS2010 开发环境 Windows Server 2008服务器系统

sp.net 网站有三种常用的发布方式:分别是拷贝开发机上发布好的文件到服务器硬盘上.打包成安装程序到服务器上安装.通过Visual Studio 开发平台远程发布到服务器. 在asp.net网站的开发阶段,经常需要将系统发布到开发者所在局域网的服务器上,供客户和项目负责人预览.之前都是在开发机上发布好之后再拷贝到服务器上部署,因为开 发阶段系统的更新很快,每次都拷贝文件很麻烦.于是开始研究VS2010发布到远程IIS服务器的方法,经过在网上查找相关资料和亲身实践成功的在Windows Serv

利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包

原文:利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包 因为业务需要,项目中需要把asp.netmvc项目打包成exe安装程序给客户,让客户直接可以点下一步下一步安装部署web程序,并且同时要将IIS服务和mysql一同安装到服务器上,因为客户的电脑可能是64位也可能是32位,所以在打包的时候就需要打包成两份安装包.研究了几天终于有所收获,下边就是打包的步骤. 打包步骤: 一.前期准备 1.将asp.netmvc发布到本地目录中

Web Deploy发布网站错误 检查授权和委派设置

web Deploy发布asp.net网站给我们提供方便,开始配置好了可以方便的发布网站,但是过久就出现无法执行此操作.请与服务器管理员联系,检查授权和委派设置.花了好长时间找到问问所在.现在解决方法分享出来.希望对大家有点用帮助 ? ? 原来,当您安装网络部署它设置了两个本地帐户WDeployConfigWriter和WDeployAdmin.对这些帐户的密码默认设置为过期.?因此,重设密码的Web服务器上,并设置为"永不过期".?然后去管理服务委派在IIS中.?它在WDeployA

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

在学习和工作的过程中,发现很多同事.朋友,在做.NET Web应用发布的时候,依然在走 生成-复制到服务器 这样的方式,稍微高级一点的,就是先发布到本地,再上传到服务器 这种方式不仅效率低下,而且不易进行版本控制,程序稍微复杂一些,加上团队协作,发布就会出现各种不可预料的版本问题. 正好这两天在玩Azure和Windows Server 2016,详见<[初码干货][Azure系列]1.再次感受Azure,体验Windows Server 2016并部署BlogEngine.NET>,而我在实