4

我有一个使用 msdeploy 部署的 Web 应用程序。

我在项目中定义了以下 parameters.xml 文件:

<parameters>

    <parameter
        name="Database Server"
        description="Location of your database server."
        defaultValue="localhost"
        tags="DBServer, SQL">
    </parameter>

    <parameter
        name="Database Name"
        description="Name of the database for your application."
        defaultValue="MyDatabase" tags="DBName, SQL">
    </parameter>

    <parameter
        name="Database Username"
        description="User name to access your application database."
        defaultValue="myusername"
        tags="SQL, DbUsername">
    </parameter>

    <parameter
       name="Database Password"
       description="Password for the Database Username."
       defaultValue="mypassword"
       tags="SQL, DbUserPassword">
    </parameter>

    <parameter
        name="RTPOne-Web.config Connection String"
        description="Connection string to enter into config"
        defaultValue="Data Source={Database Server};Initial Catalog={Database Name};User Id={Database Username};Password={Database Password};Connection TimeOut=30;Pooling=false;Max Pool Size=500;"
        tags="Hidden, SQL">
        <parameterEntry kind="XmlFile" scope="\\web\.config$" match="//*[local-name()='connectionStrings']/*[local-name()='add'][@name='RTPOne']/@connectionString" tags="Sql, SqlConnectionString, Hidden" />
        <parameterEntry kind="XmlFile" scope="\\web\.config$" match="//*[local-name()='appSettings']/*[local-name()='add'][@key='DBConnStr']/@value" tags="" />
    </parameter>
</parameters>

最后一个参数使用以下替换字段:

{Database Server}
{Database Name}
{Database Username}
{Database Password}

当我在 IIS 7.5 中使用“导入应用程序”选项时,这些替换字段会使用其他参数提供的值正确填写。

但是,当我使用Application .Deploy.cmd文件通过命令行部署应用程序时,这些值都没有被正确替换,我最终得到一个如下所示的连接字符串:

Data Source={Database Server};Initial Catalog={Database Name};User Id={Database Username};Password={Database Password};Connection TimeOut=30;Pooling=false;Max Pool Size=500;

使用部署包生成的Application .SetParameters.xml 文件包含正确的默认值。我期望 Deploy.cmd 批处理文件应该能够使用其中的默认值:

<?xml version="1.0" encoding="utf-8"?>
<parameters>
  <setParameter name="IIS Web Application Name" value="Default Web Site/MyApplication" />
  <setParameter name="Database Server" value="localhost" />
  <setParameter name="Database Name" value="MyDatabase" />
  <setParameter name="Database Username" value="MyUsername" />
  <setParameter name="Database Password" value="MyPassword" />
  <setParameter name="Web.config Connection String" value="Data Source={Database Server};Initial Catalog={Database Name};User Id={Database Username};Password={Database Password};Connection TimeOut=30;Pooling=false;Max Pool Size=500;" />
</parameters>

我能做些什么来让 Deploy.cmd 批处理文件正确替换这些值吗?

4

2 回答 2

1

你可能不知道的一个特点...

如果 Application.SetParameters.xml 文件包含setParameter连接字符串的元素,则 WebDeploy 将按原样使用该。即根本不会尝试执行任何替换。

如果从 SetParameters.xml 文件中删除该 setParameter 引用,WebDeploy 将识别应该使用定义的默认值,并按照预期根据其他参数的值计算它。

于 2017-03-31T15:17:48.047 回答
0

您可以将Application.SetParameters.xml带到 外面并替换您需要的值并将其作为参数传递 Application.Deploy.cmd。在可能的情况下,我为每个环境创建了单独的参数文件,并根据我们正在部署的环境将它们传递。您也可以在 application.deploy-readme.txt 中找到详细信息。

如果您需要更多详细信息,请告诉我

于 2013-08-11T22:56:53.353 回答