我有一个项目,我想通过团队城市部署,但是当它构建时,我想生成许多不同的工件。
在我的app.config文件中,我有一个名为“platform”的应用程序设置,我想更改每个工件的值。例如,在构建时,我会得到三个工件,dev,test,staging,它们可以将“platform”设置更改为相应的值。
我已经创建了powershell脚本并在团队城市之外成功运行它,但是我还没有弄清楚如何设置app.config存在于团队城市中的文件目录。
是否有可用于定位当前构建app.config文件的系统变量?或者是否有一种不同/更好的方式可以实现我想要做的事情?
由于
答案 0 :(得分:1)
或者我有什么不同/更好的方式可以完成我想做的事情?
虽然这类问题可以导致争论哪个更好......根据你所描述的内容,我相信Octopus Deploy会很合适。 Octopus Deploy与TeamCity非常完美地集成,它处理允许部署到每个环境所需的转换配置,即开发,测试和暂存。您只需在Octopus配置中将这些配置为环境,并且在安装过程中,Octopus可以根据您定义的变量根据需要修改配置文件。
答案 1 :(得分:0)
我建议在TeamCity配置中创建3个构建步骤:
在Parameters
标签内,您可以定义配置参数。只需在此定义3个值:即:PlatformDev
,PlatformTest
,PlatformStaging
您可能正在使用Visual Studio运行时类型。因此,您可以在此处添加MSBuild属性中的特定值:
传递参数Dev
,然后执行代码
/p:CustomPlatform="%PlatformDev%"
传递参数Test
,然后执行代码。
/p:CustomPlatform="%PlatformTest%"
传递参数Staging
,然后执行代码。
/p:CustomPlatform="%PlatformStaging%"
然后,可以在MSBuild脚本中访问值CustomPlatform。
如果您使用powershell脚本来运行编译/工件创建,则可以将此CustomPlatform
添加为脚本的参数,并直接使用它。
另一种方法可能是使用XSLT使用特定值转换app.config文件。