我正在尝试使用MSDeploy在TFS中的Team Build上部署Web应用程序.有几个问题解决了为了调用MSDeploy而必须在MSBuild中传递的属性,但是我没有找到足够的文档来说明可用的属性.有人有可用属性列表吗?
以下是我发现的一些问题,但我无法找到属性的确切列表:
我正在从MSBuild命令行将Web应用程序包部署到IIS6上的MSDepSvc,使用基本身份验证可以正常使用以下命令:
MSBuild.exe Web.csproj
/p:Configuration=Debug
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MsDeployServiceUrl=http://[server name]/MsDeployAgentService
/p:DeployIisAppPath=DeploymentTestProject
/p:MSDeployPublishMethod=RemoteAgent
/p:CreatePackageOnPublish=True
/p:username=***
/p:password=***
Run Code Online (Sandbox Code Playgroud)
但是,我真正想做的是删除用户名和密码参数,然后以当前用户的身份回退到集成的auth.此命令将进入构建服务器,我不希望具有对目标环境(MsDepSvc所需)的管理员权限的帐户的纯文本凭据可见.我无法找到有关如何执行此操作的任何文档,并且当我尝试发布时,丢弃凭据返回401未经授权.
令我特别沮丧的是,我可以愉快地在带有集成身份验证的软件包中运行deploy命令(只是不包含凭据),我似乎无法从MSBuild命令行运行它.我正在尝试封装包并将进程部署到单个命令中而不编辑构建文件,这是目前唯一的方法.
有什么想法吗?
编辑 在与Sayed进行一些讨论并深入了解命令行输出后,执行上面的MSBuild命令(没有用户名和密码参数)后,将调用以下MSDeploy命令:
msdeploy.exe
-source:package='[project path]\Web\obj\Debug\Package\Web.zip'
-dest:auto,ComputerName='http://[server]/MsDeployAgentService',UserName='***',IncludeAcls='False',AuthType='NTLM'
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-retryAttempts=2
Run Code Online (Sandbox Code Playgroud)
您可以看到正在设置UserName属性,该值是当前登录用户的用户名.如果我把它拿出并直接运行上面的命令,那么部署就可以了.
那么在此基础上,为什么原始MSBuild命令在调用MSDeploy时插入UserName属性?这似乎是现在唯一的障碍.
我目前正在运行Visual Studio Team System 2010 RC,我正在尝试使用Build Service设置来构建我的解决方案并在其中部署3个Web应用程序.我已经创建了一个名为Integration的自定义构建配置,并且我在每个Web应用程序的"属性"的"包/发布"选项卡上设置了"在目标服务器上使用的IIS网站/应用程序名称".
在我的构建定义中,我设置了以下参数:
/ p:DeployOnBuild = True/p:DeployTarget = MSDeployPublish/p:MSDeployPublishMethod = InProc/p:MsDeployServiceUrl = http:// my-server-name:8172/msdeploy.axd/p:EnablePackageProcessLoggingAndAssert = True
但是,当我运行构建时,我得到以下错误,对于所有三个Web应用程序:
更新setAcl(MyProjectName).
C:\ Program Files\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(3481,5):错误:Web部署任务失败.(试图执行未经授权的操作.)
我不认为这是我的实际问题.在日志中的以下条目之后发生此错误:更新setAcl这是导致错误消息的原因,但似乎MSDeploy正在尝试部署到构建服务器上的本地IIS,而不是我使用MsDeployServiceUrl参数指定的服务器.
在C:\ Program Files\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets中查看目标文件后,我添加了EnablePackageProcessLoggingAndAssert,它添加了额外的日志记录.该日志显示MsDeployServiceUrl值的emptry字符串.我还注意到在目标中MsDeployServiceUrl有一个小写的s,这有点令人困惑,因为任务名称MSDeployPublish有一个大写的S.我尝试使用大写,然后再次使用小写,但都没有工作.
还有几点需要注意:
有谁知道我是否提供正确的参数?还是给我提供正确的?
谢谢
我一直试图解决这个问题,到目前为止还没有找到一个简单的解决方案.使用TFS 2010作为构建过程的一部分来部署数据库项目(和网站)真的很难吗?
我发现了一个涉及大量复杂检查和编辑工作流程的例子(这是一个巨大的工作流程btw).
我甚至购买了"使用VS 2010进行专业应用程序生命周期管理"这本书,但显然专业人士并未部署他们的应用程序,因为书中甚至没有提到它.
我知道在TFS方面我很迟钝,但似乎应该有任何简单的方法来做到这一点.在那儿?
我正在寻找有关将我的 Web 应用程序部署到我们的测试服务器的信息。听过 Hanselman 说这是你可以在 VS 2010 中轻松完成的事情,我也开始寻找有关如何做到这一点的信息,但似乎找不到任何东西。
忽略大多数博客文章/文章已经超过一年的事实,似乎没有关于如何做到这一点的明确分步信息。
有人找到光了吗?你是从哪里了解到这些信息的?
迄今为止我找到的最佳资源:-
http://blogs.msdn.com/b/webdevtools/archive/2009/02/04/web-deployment-with-vs-2010-and-iis.aspx
http:// blogs.msdn.com/b/webdevtools/archive/2009/03/10/how-does-web-deployment-with-vs10-and-msdeploy-work.aspx
非常感谢,
科汉
刚从客户端站点的TFS 2008到2010,现在想知道TeamBuildTypes文件夹中的TFSBuild.proj文件发生了什么.我已经有了构建和丢弃工作,现在我需要让旧部署再次运行.我们曾经在TFSBuild.proj中使用AfterBuild目标执行此操作.这种机制似乎已在2010年发生变化或消失.
有人能指出我的文章或描述2010年部署选项的变化吗?
具体来说,我需要支持运行psexec以在远程部署目标上安装和启用Windows服务,并且我需要将一些网站/ Web服务部署到远程IIS节点,作为自动构建的一部分.
编辑:刚刚发现这个:http://blogs.msdn.com/jimlamb/archive/2009/11/03/upgrading-tfs-2008-build-definitions-to-tfs-2010.aspx我不止一点点2008年和2010年之间的重大变化带回来.我将需要有关如何在新的默认构建流程模板机制中部署远程站点和服务的建议.
我有VS2010,我开了一个网站.我现在如何使用MS Deploy部署到zip文件,该文件可以安装在远程IIS站点中?
我搜索了所有菜单选项,但似乎无法找到从哪里开始.
提前致谢