【发布时间】:2018-01-15 23:52:31
【问题描述】:
我有一个 ASP .Net MVC 应用程序,它有 4 个不同的发布配置文件:dev、test、demo 和 prod。
这些发布配置文件是使用相同的两个步骤构建的:NuGet 还原,然后是 MSBuild。然后,它们被部署到许多不同的服务器上:一些开发服务器(每个团队一个开发服务器)、一个测试服务器、一个演示服务器和几个生产服务器。
msbuild /p:Configuration="$(Configuration)"
/p:PlatformTarget="any cpu"
/p:DeployOnBuild="True"
/p:DeployTarget="MsDeployPublish"
/p:MSDeployServiceURL="$(MSDeployServiceURL)"
/p:DeployIISAppPath="portal"
/p:CreatePackageOnPublish="False"
/p:MsDeployPublishMethod="WMSVC"
/p:AllowUntrustedCertificate="True"
/p:UserName="Deploy_User_For_TFS"
/p:Password="P@ssw0rd"
/p:AutoParameterizationWebConfigConnectionStrings=False
/p:ExcludeFilesFromDeployment="Cache"
目前我有 4 个 TFS 构建配置(每个发布配置文件一个)和一个文件,其中包含 MSDeployServiceURL 参数的所有可能值。
这种方法有两个问题:
- 当我们不得不添加一个新参数
AutoParameterizationWebConfigConnectionStrings时,我们不得不在 4 个地方而不是一个地方进行更改。 - 我们必须有一个共享文件作为参数的来源。很难理解应该在哪里复制哪个值,而且人们经常会犯错误。
所以我有两个问题:
- 有没有办法拥有一个通用模板,我可以只指定我的参数 Configuration 和可能的 MSDeployServiceURL 列表,而其他一切都保持不变?拥有这样的模板应该可以解决问题 #1。
- 有没有办法定义一个下拉式变量,用户无法在其中输入值,但应从预定义的值列表中选择?
【问题讨论】:
-
您是否通过 Jacob 的回答解决了问题?它解决了您的问题,您可以Accept it as an Answer,这对阅读此主题的其他社区成员可能会有所帮助。
-
我们试过了,比以前更不方便:旧配置难以理解和维护,但易于使用。并且提议的配置“看起来不错”,但在实践中,为了发布它而构建一些东西很麻烦。
标签: deployment tfs msbuild msdeploy