如何让 TFS2010 通过 MSBUILD 为我运行 MSDEPLOY?

2024-03-25

有一个很棒的 PDC 演讲可以在这里找到 http://microsoftpdc.com/Sessions/FT56?type=wmv来自 Vishal Joshi,其中描述了 Visual Studio 2010 中的新 MSDEPLOY 功能 - 以及如何在 TFS 中部署应用程序。 (还有一个很棒的演讲来自Scott http://www.hanselman.com/blog/WebDeploymentMadeAwesomeIfYoureUsingXCopyYoureDoingItWrong.aspxHanselman,但他没有进入 TFS)。

您可以使用 TFS2010 中的 MSBUILD 调用 MSDEPLOY 将包部署到 IIS。这是通过 MSBUILD 的参数来完成的。

该演讲解释了一些命令行参数,例如:

/p:DeployOnBuild
/p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True
/p:MSDeployPublishMethod=InProc
/p:MSDeployServiceURL=localhost
/p:DeployIISAppPath="Default Web Site"

但是这方面的文档在哪里 - 我找不到任何文档?

我花了一整天的时间试图让它发挥作用,但无法完全正确,并不断出现各种错误。如果我运行包的cmd文件完美部署。如果我通过 Visual Studio 运行 WebDeploy,它也可以完美运行。

但我想让整个部署运行起来msbuild使用这些参数而不是单独调用msdeploy或运行包.cmd文件。我怎样才能做到这一点?

附言。是的,我有Web Deployment Agent Service跑步。我还在 IIS 下运行管理服务。我尝试过同时使用两者。


我正在使用的参数:

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:Configuration=Release 
/p:CreatePackageOnPublish=True  
/p:DeployIisAppPath=staging.example.com   
/p:MsDeployServiceUrl=https://staging.example.com:8172/msdeploy.axd 
/p:AllowUntrustedCertificate=True

给我 :

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets (2660): VsMsdeploy 失败。(远程代理(URLhttps://staging.example.com:8172/msdeploy.axd?site=staging.example.com https://staging.example.com:8172/msdeploy.axd?site=staging.example.com)无法联系。确保目标计算机上安装并启动了远程代理服务。)错误详细信息:远程代理(URLhttps://staging.example.com:8172/msdeploy.axd?site=staging.example.com https://staging.example.com:8172/msdeploy.axd?site=staging.example.com)无法联系。确保目标计算机上安装并启动了远程代理服务。收到了不支持的回复。响应标头“MSDeploy.Response”为“”,但预期为“v1”。远程服务器返回错误:(401) 未经授权。


IIS7+相关解答....

好的 - 这就是我最终所做的。或多或少,跟随帖子西蒙·韦弗 https://stackoverflow.com/users/16940/simon-weaver在这个线程/问题中。

但是当涉及到 MSBuild 设置时..这里大多数人都使用以下设置:/p:MSDeployPublishMethod=RemoteAgent这是不对对于 IIS7。使用此设置意味着 TFS 尝试连接到以下 URL:https://your-server-name/MSDEPLOYAGENTSERVICE但要访问该 url,进行身份验证的用户必须是管理员。这是破碎的。 (并且您需要勾选“管理员覆盖规则”)。我认为这个网址适用于 IIS6。

这是当您尝试使用 RemoteAgent 连接时的标准错误消息:-

标准 401 Frak Off u 吮吸 RemoteAgent,错误

C:\程序文件 (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets (3588):Web 部署任务 失败。(远程代理(URLhttp://您的网络服务器/MSDEPLOYAGENTSERVICE http://your-web-server/MSDEPLOYAGENTSERVICE) 无法联系到。确保 远程代理服务已安装并且 在目标计算机上启动。) 确保站点名称、用户名和 密码正确。如果问题是 未解决,请联系您的 本地或服务器管理员。错误 详细信息:远程代理(URLhttp://您的网络服务器/MSDEPLOYAGENTSERVICE http://your-web-server/MSDEPLOYAGENTSERVICE) 无法联系到。确保 远程代理服务已安装并且 在目标计算机上启动。一个 收到不支持的答复。这 响应标头“MSDeploy.Response” 是“V1”,但预期是“v1”。这 远程服务器返回错误:(401) 未经授权。

所以..你需要改变你的MSDeployPublishMethod对此:

/p:MSDeployPublishMethod=WMSVC

The WMSVC代表Windows管理器服务。它基本上是远程代理的更新包装,但现在允许我们正确提供用户名和密码..其中用户不必是管理员! (高兴!)所以现在您可以正确设置您想要访问的用户..每个网站..

现在它还尝试访问 URL:https://your-web-server:8172/MsDeploy.axdPublish窗户可以!(天哪 -> 一分钱掉落!!繁荣!)

这是我的最终 MSBuild 设置:

/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish 
/p:MSDeployPublishMethod=WMSVC
/p:MsDeployServiceUrl=your-server-name
/p:DeployIISAppPath=name-of-the-website-in-iis7    
/p:username=AppianMedia\some-domain-user 
/p:password=JonSkeet<3<3<3
/p:AllowUntrustedCertificate=True

注意到用户名中有域名吗?你需要那个,就在那里。另外,在我的图片中,我已允许我们的域用户访问该网站进行管理。因此,我添加的新用户帐户 (TFSBuildService) 具有以下成员资格Domain Users团体……这就是一切的运作方式。

现在 - 如果你读完了所有这些,请拥有一个 lolcat(因为它们太 2007 年了)......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 TFS2010 通过 MSBUILD 为我运行 MSDEPLOY? 的相关文章

  • 嵌套 web.config 转换

    我有一个带有简单 web config 的子目录
  • 在一个解决方案中调用不同项目的方法

    1 个解决方案中有 3 个项目 我对第一个项目中的主文件进行的主要操作 但是我需要调用第三个项目中的方法并使用类 例如 第三个项目有 public DataClasses1DataContext base global WindowsFor
  • TFS 构建 - 部署/包目标未运行

    我们设置了一个 TFS 构建定义 在其中传递以下额外的 MSBuild 参数 p DeployOnBuild true DeployTarget PipelinePreDeployCopyAllFilesToOneFolder Packag
  • 如何使 MSBuild 在引用的项目中正确跟踪使用外部工具生成的文件?

    我有 MSBuild 代码 它使用特定的构建操作来获取文件 CompileFoo在此示例中 并生成输出文件 具有不同的扩展名 这是我到目前为止的代码
  • vs2010 在任何类型的滚动中卡住/冻结

    我在 VS 2010 SP1 中有一个恼人的问题 当我尝试用鼠标 键盘或滚动条向上 向下滚动时 VS2010 就会变得疯狂 屏幕的某些部分会冻结 我重新启动了VS 2010 甚至重新启动了计算机 但没有任何反应 我卸载了VS2010和vs2
  • 如何在nuget.config中使用变量repositoryPath和csproj参考HintPath

    由于我们使用了 NuGet 包引用问题 我的公司遇到了问题多宿主项目 https blog nuget org 20141010 nuget is broken html multi homed projects 将一个项目包含在多个解决方
  • Unix 到 Windows:替代 vsnprintf 来确定长度?

    我目前正在将 Linux 库之一的代码转换为 Windows DLL 在这个库中 我有一个函数 它以 printf 方式获取最后一个参数 格式字符串 然后省略号 在此函数中 我使用 vsnprintf 来格式化提供的参数 因为我想知道是否可
  • TFS Build 未按预期转换 web.config

    目标是让 TFS 构建和部署 2 个以上不同的配置 并让 web config 转换文件在其输出中包含预期内容 这是一个 ASP NET MVC 项目 Web 调试 配置 参见 PasteBin http pastebin com 9Zwb
  • Visual C++ MFC 中窗口启动时的事件顺序

    假设我有一个从 CWnd 派生的类 它具有事件处理函数OnPaint OnCreate and OnSize 如您所知 所有这些都是在窗口启动时发生的 但我想看看它们之间的顺序是什么 例如 当我在其中一个中设置断点时 在结束函数后 控制不会
  • 更改 msbuild.exe 的工作目录

    我正在从批处理文件执行 MSBuild MSBuild 脚本所在的目录与我希望 MSBuild 在运行脚本时考虑工作目录的目录不同 调用MSBuild exe时 如何更改其工作目录 编辑 更多细节假设我有一个位于其他服务器上的 MSBuil
  • VS2010中是否可以更改CSS验证方案

    我正在 VS2010 中编辑一个简单的 CSS 文件 编辑器似乎对 CSS 的理解相当有限 例如 my rule position relative 生成警告 Validation CSS 1 0 position is not a kno
  • 在构建服务器上安装 F# 4.1 SDK

    我已在 PC 上安装了支持 F 的 Visual Studio 2017 并且 MSBuild 目标位于C Program Files x86 Microsoft Visual Studio 2017 Enterprise MSBuild
  • T4 模板的自定义输出文件路径

    我发现使用非标准目录结构的 t4 模板确实很困难 我在 csproj 文件中使用链接 这似乎是问题的根源 我已经让它工作了 但是 VS 自动进行了更改 从而破坏了一切 我有以下目录结构 source MyLib cs generate My
  • 如何设置 Visual Studio XML 文档的格式以在 Web 上显示

    我正在使用 Visual Studio 2010 并开始做一个好孩子 并通过 XML 注释记录我编写的所有代码 我有一个记录良好的项目 我什至想出了如何让 Visual Studio 在构建时输出完整的 XML 文档 我的问题是 在网络上格
  • pubxml Web 发布工具事件生命周期

    我正在使用 Visual Studio 2012 中的 Web 发布工具发布到文件系统 我了解到我可以打开 Properties 文件夹中的 pubxml 来执行更高级的操作 我想要做的是在发布任务结束时运行命令行应用程序 我通常会在自定义
  • msdeploy 并跳过未命名为 x 的目录

    我试图跳过除 Templates 目录之外的所有目录 但我无法让它工作 Templates 目录包含在跳过的目录中 或者如果我从正则表达式的开头删除 我会跳过整个 MyTestWebsite 目录 C Program Files IIS M
  • VS 2010、NUNit 和“当前不会命中断点。尚未为此文档加载任何符号”

    使用 Windows 7 32 位 VS 2010 NET 4 DLL NUnit 2 5 5 对应用程序进行单元测试 我目前收到以下错误 看了很多帖子并尝试了以下方法 重启机器 重启VS 删除 bin obj 并重新加载 清理 重建 但我
  • 第三方dll导致程序崩溃,没有抛出异常

    我正在使用 Visual Studio 2010 并使用 C 进行编码 我有一个在我的项目中使用的第三方 dll 当我尝试使用特定方法时 在看似随机的情况下 程序只是崩溃 没有抛出任何异常 会议就这样结束了 有什么办法可以追踪正在发生的事情
  • 为什么调试器只显示数组指针中的一个元素?

    首先 我知道new是执行此操作的 C 方法 我只是表明有不止一种方法可以重现此错误 而且两种方法都令人难以置信的令人沮丧 我有两种形式的源文件 我正在尝试调试另一个编程作业 但我并没有寻求帮助 基本上 我正在尝试重新实施set作为一个类 具
  • 使用 Makefile 项目在 Visual Studio 中自定义调试命令

    我在 Visual Studio 2010 中有一个由 Makefile 支持的项目 实际上使用 NAnt 但这不是重点 构建过程的输出是一个 elf 文件 我有一个单独的非 VStudio 调试器 可以在该 elf 文件上运行来调试它 构

随机推荐