0

我正在寻找一种部署到多个不同环境的方法。

即,dev、uat、prod1 和 prod2 服务器

我的印象是 msdeploy 可以为此工作。目前我们有一些使用类似命令部署的东西

"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" -verb:sync -source:contentPath="D:\sourcepath" -dest:contentPath="D:\destpath", computerName=PRODSERVER1


"C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe" -verb:sync -source:contentPath="D:\sourcepath" -dest:contentPath="D:\destpath", computerName=PRODSERVER2

这会起作用,但是在我正在开发的需要部署的应用程序中,涉及到数据库连接,需要根据环境进行更改。

<connectionStrings>
        <add name="DEVServer" connectionString="Data Source=DEVServer\SQLinstance;Initial Catalog=DBNAME;User ID=sqluser;Password=sqlpassword" providerName="System.Data.SqlClient" />
</connectionStrings>

此外,由于这是一个 WCF 服务,我有一个端点的身份,也需要根据环境进行更改

<identity>
            <dns value="DEVServer" />
</identity>

有没有办法对此进行参数化?我应该设置多个 web.config 文件吗?最简单的方法是什么?

4

1 回答 1

1

假设您使用的是 Visual Studio 2010 或 2012,您可以为每个环境设置一个发布配置文件并将数据库连接字符串放入其中,为每个发布配置文件设置一个 Web.config 转换以进行端点更改,然后您可以部署从命令行使用 MSBuild 而不是直接使用 msdeploy。

有关如何设置发布配置文件的详细信息,请参阅http://msdn.microsoft.com/en-us/library/dd465337.aspx

有关 Web.config 转换示例,请参阅http://www.asp.net/web-forms/tutorials/deployment/deployment-to-a-hosting-provider/deployment-to-a-hosting-provider-web-config-文件转换 3-of-12

从命令行发布时,发布解决方案的格式如下:

msbuild path\to\solution.sln /p:DeployOnBuild=true /p:PublishProfile=[nameofprofile] /p:Password=[password]

要发布项目而不是解决方案,请指定 .csproj/.vbproj 文件并添加 /p:VisualStudioVersion=11.0 用于 VS 2012(10.0 用于 VS 2010)。

于 2013-02-08T17:07:03.293 回答