问候, 我正试图弄清楚如何使用MSBuild和Visual Studio 2010来实现以下场景。
我想我对如何开始这个有点困惑,所以我能得到的任何帮助都会很棒。我曾考虑过简单地硬编码不同的服务名称并使用条件编译语句来设置它们,但我认为这样做并不是特别明确的方法。有什么想法吗?
答案 0 :(得分:3)
在构建期间压缩服务位并使用MSBuild使用或MSBuild扩展任务进行部署可能更简单。您可以将特定于环境的配置数据放在msbuild .properties文件中(mylocal.service.properites,qp.service.properties,uat.service.properties等)。这是我部署服务的方式。
注意:属性文件将包含数据库连接字符串,TargetDir,ServiceName等内容。
服务名称在安装时指定,请参阅下面的'sc','installutil'或WindowsService msbuild extensions pack task代码段。这意味着您可以复制相同的服务位,并使用唯一的名称安装每个目录(例如QAService,UATService,PRODService)。
注意:我想强调服务名称是部署时考虑因素,而不是构建时考虑因素。
<WindowsService TaskAction="Install"
ServiceName="$(ServiceName)"
MachineName="$(TargetServer)"
ServicePath="$(FullServicePath)"
User="$(User)" />
MSI安装程序的方法类似。我假设你的安装程序提示所有必要的环境特定配置数据...所有[体面]安装程序都有办法从文件提供答案,而不是交互式地使用安装程序。因此,如上所述,您为每个环境创建一个答案文件,并在命令行上将其提供给安装程序。
您不希望在构建时执行此操作...因此每个平台都有一个单独的安装程序。被迫使用古老版本的wyse安装程序执行此操作。让我伤心。您需要一个可以在每个环境中运行的单个MSI安装程序(给定特定于环境的答案文件)。
MSI命令行和应答文件格式的详细信息因产品而异。您使用的安装程序包是什么?
干杯, / JHD