我正在尝试将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>
谢谢
答案 0 :(得分: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>
希望这能解决您的问题。