Chr*_*eet 32 msbuild tfs publish release msdeploy
我刚刚开始使用团队构建功能,而且我发现做一些非常简单的事情需要大量的事情.我目前的设置是一个带有Web应用程序,组装应用程序和测试应用程序的解决方案.Web应用程序具有PublishProfile设置,可通过文件系统发布.
我有一个TFS构建定义设置,它目前每晚构建整个解决方案并将其作为旧构建的备份放到网络共享上.我现在要做的就是拥有PublishProfile我已经设置为我发布Web应用程序.我确定这很简单,但我已经玩了一整天的MSBuild命令而没有运气.救命!
Say*_*imi 61
不幸的是,MSBuild中不支持或实现共享发布配置文件.从配置文件发布的逻辑包含在VS本身中.幸运的是,配置文件中不包含太多信息,因此有多种方法可以实现您的目标.我们的目标并不特别支持发布对话框所遵循的完全相同的步骤,但是为了从团队构建中获得相同的结果,您有两个选择,我将在此处概述.
设置Team Build定义以进行部署时,需要为构建过程传递MSBuild参数的某些值.见下图,我突出显示了这一点.

选项1: 传递以下参数:
/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;PackageTempRootDir="\\sayedha-w500\BuildDrops\Publish";AutoParameterizationWebConfigConnectionStrings=false
Run Code Online (Sandbox Code Playgroud)
让我解释一下这些参数,告诉你结果然后解释下一个选项.
DeployOnBuild=true:这告诉项目执行DeployTarget属性中定义的目标.
DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder:这指定DeployTarget目标.
PackageTempRootDir="\\sayedha-w500\BuildDrops\Publish":这指定将写入包文件的位置.这是在打包文件之前写入文件的位置.
AutoParameterizationWebConfigConnectionStrings=false:这告诉Web发布管道(WPP)不参数化web.config文件中的连接字符串.如果你没有指定这个,那么你的连接字符串值将替换为$(ReplacableToken_dummyConStr-Web.config Connection String_0)等占位符
执行此操作后,您可以启动构建,然后在PackageTempRootDir位置内找到PackageTmp文件夹,其中包含您要查找的内容.
选项2: 因此对于上一个选项,您可能会注意到它创建了一个名为PackageTmp的文件夹,如果您不想这样,那么您可以使用以下选项.
/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;_PackageTempDir="\\sayedha-w500\BuildDrops\Publish";AutoParameterizationWebConfigConnectionStrings=false
Run Code Online (Sandbox Code Playgroud)
这里的不同之处在于,而不是PackageTempRootDir你会传入_PackageTempDir.我不建议开头的原因是因为以_开头的MSBuild属性表示该属性基本上是"内部"的,在未来版本中它可能意味着其他东西或根本不存在.因此使用风险自负.
选项3
尽管如此,你可以使用构建来打包你的网站.如果要执行此操作,请使用以下参数.
/p:DeployOnBuild=true;DeployTarget=Package
Run Code Online (Sandbox Code Playgroud)
当您在构建的drop文件夹中执行此操作时,您将像往常一样找到_PublishedWebsites文件夹,然后在其中将有一个文件夹{ProjectName} _Package其中{ProjectName}是项目的名称.该文件夹将包含软件包,.cmd文件,参数文件和其他几个文件夹.您可以使用这些文件来部署Web.
我希望这不是信息过载.
| 归档时间: |
|
| 查看次数: |
24020 次 |
| 最近记录: |