我有一个ASP .Net MVC应用程序,具有4种不同的发布配置文件:dev,test,demo和prod。如何管理TFS中的很多类似配置
这些发布配置文件是使用相同的两个步骤构建的:NuGet恢复,然后是MSBuild。然后,它们被部署到许多不同的服务器上:几台dev服务器(每个团队一台服务器),一台测试服务器,一台演示服务器和多台生产服务器。
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="[email protected]"
/p:AutoParameterizationWebConfigConnectionStrings=False
/p:ExcludeFilesFromDeployment="Cache"
目前,我有4个TFS构建配置(一个为每个发布配置文件),并在那里我有所有MSDeployServiceURL参数的可能值的文件。
有两个问题,这种方法:
- 当我们不得不增加一个新的参数
AutoParameterizationWebConfigConnectionStrings
我们不得不改变它在4处而不是一个。 - 我们必须有一个共享文件作为参数的来源。理解哪些价值应该被复制并且人们经常犯错误并不容易。
所以我有两个问题:
- 有没有办法有一个通用模板,在那里我可以只指定我的参数配置和可能的MSDeployServiceURL的名单,并拥有一切保持原样?有这样的模板应该解决问题#1。
- 有没有办法定义下拉式变量,其中值不能由用户键入,但应该从预定义的值列表中选择?
您是否通过Jacob的回答解决了这个问题?它解决了你的问题,你可以[接受它作为一个答案](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work),这可以有益于其他社区会员阅读此主题。 –
我们尝试过了,它比我们之前所做的更不方便:旧的配置很难理解和维护,但**易于使用**。并且提出的配置“看起来不错”,但是在实践中,为了发布它而构建一些东西很麻烦。 – DarkWalker