3

我正在尝试将 MSDeploy 与参数设置文件选项一起使用,这样我就可以通过使用不同文件覆盖参数来构建一次并部署到多个环境。我从 PowerShell 调用 msdeploy。

msdeploy.exe -verb:sync `
 -source:"contentPath='$SourceLocalPath'" ` 
 -dest:"contentPath='$TargetLocalPath',computername='$TargetServer'"
 -setParamFile:"$ParamFilePath" `
 -verbose

这会导致无法识别参数的错误。

msdeploy.exe:错误:无法识别声明的参数“SqlConnString”。

如果我删除“setParamFile”行,它部署得很好,但随后使用默认值。此外,如果我尝试从 IIS 手动导入包,它会显示填充默认值的参数。

我在 Web 项目的根目录中有一个 Parameter.xml 文件:

<parameters>
  <parameter name="SqlConnString" description="Please provide the SQL connection string" defaultValue="...;Initial Catalog=xxx;server=xxx;" tags="">
    <parameterEntry kind="XmlFile" scope="\\web.config$" match="/configuration/connectionStrings/add[@name='Sql']/@connectionString" />
  </parameter>
</parameters>

该包是使用包内的 ...SetParameters.xml 文件创建的,该文件包含我的 Parameters.xml 文件中的条目以及标准条目。

<parameters>
  <setParameter name="SqlConnString" value="...Initial Catalog=xxx;server=xxx;"/>
...  
</parameters>

谢谢

4

1 回答 1

2

尝试将“name”中的值从“SqlConnString”更改为“YourSqlConnectionName-Web.config Connection String”。如果您想知道确切的名称,您必须查看您的 web.config 文件。上面的示例应该适用于 web.config 文件中这样的部分:

  <connectionStrings>
    <add name="YourSqlConnectionName"
      connectionString="...;Initial Catalog=xxx;server=xxx;"
      providerName="System.Data.EntityClient"/>
  </connectionStrings>

所以你应该像这样配置你的 setParameters.xml 文件:

<parameters>
  <setParameter name="YourSqlConnectionName-Web.config Connection String" value="...Initial Catalog=xxx;server=xxx;"/>
</parameters>

和您的 Parameters.xml 文件,如:

<parameters>
  <parameter name="YourSqlConnectionName-Web.config Connection String" description="Please provide the SQL connection string" defaultValue="...;Initial Catalog=xxx;server=xxx;" tags="">
    <parameterEntry kind="XmlFile" scope="\\web.config$" match="/configuration/connectionStrings/add[@name='YourSqlConnectionName']/@connectionString" />
  </parameter>
</parameters>

希望这可以解决您的问题。

于 2013-11-25T17:55:30.187 回答