MSDeploy setParameter.xml 未转换 web.config
MSDeploy setParameter.xml not transforming web.config
在我的 "myconfig" 配置文件转换中 web.config 我在 appSettings 下有这个:
<add key="my.config" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" value="derp" />
当我使用此转换进行 msbuild 时,值已正确转换。现在我想构建一个 msdeploy 包并在部署时转换这个值。
我把这个 parameters.xml 放在我的项目根目录中:
<?xml version="1.0" encoding="utf-8" ?>
<parameters>
<parameter name="my.config" description="sdfsdfsdfsd" defaultValue="fart">
<parameterEntry kind="XmlFile"
scope="\Web\.config$"
match="/configuration/appSettings/add[@my.config]/@value/text()" />
</parameter>
</parameters>
我构建我的包
msbuild app.csproj /T:Package /p:Configuration=myconfigprofile;PackageLocation=mydeploy.zip
我看看mydeploy.SetParameters.xml
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="IIS Web Application Name" value="Default Web Site/myApp_deploy" />
<setParameter name="my.config" value="fart" />
</parameters>
然后我进入 mydeploy.zip 内部的 parameters.xml 并看到它也在那里:
<parameters>
<parameter name="my.config" description="sdkflsdjfldfj" defaultValue="fart">
<parameterEntry kind="XmlFile" scope="\Web\.config$" match="/configuration/appSettings/add[@name='my.config']/@value/text()" />
</parameter>
</parameters>
到目前为止看起来不错,然后我部署:
mydeploy.deploy.cmd /Y /M:server1
我在部署服务器上查看 web.config,值未转换。我也没有看到任何错误,我该如何调试呢?
当我 运行 msbuild 和 parameters.xml 呈现时,那里发生了什么神奇的事情?包准备如何通过参数将 web.config 转换为 Web 部署?
这个:
add[@name='my.config']
必须更改为:
add[@key='my.config']
但更大的问题仍然存在,我该如何调试?我不得不尝试一百万次,只是猜测,因为我有零 errors/logs 来帮助解决这个问题。是否有详细的日志记录或某种验证器或任何东西?
为了调试 technet 给了我这个试试:
msbuild MyProject.proj /t:go /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic
如果您使用的是 MSDeploy,则可以使用以下命令获取部署的完整输出:
msdeploy -verb:sync -source:dirpath=C:\WebDeployDemo\Src -dest:dirpath=C:\WebDeployDemo\Dst -setParamFile=C:\WebDeployDemo\ParameterFile.xml -详细 >msdeploysync-verbose.log
如果您使用 -verbose 标志,这有助于调试 VSTS WebRM 部署。
来源:
https://docs.microsoft.com/en-us/iis/publish/troubleshooting-web-deploy/troubleshooting-web-deploy
https://blogs.msdn.microsoft.com/spike/2012/10/12/using-msdeploy-to-update-and-remove-sections-in-web-config-a-simple-example/
在我的 "myconfig" 配置文件转换中 web.config 我在 appSettings 下有这个:
<add key="my.config" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" value="derp" />
当我使用此转换进行 msbuild 时,值已正确转换。现在我想构建一个 msdeploy 包并在部署时转换这个值。
我把这个 parameters.xml 放在我的项目根目录中:
<?xml version="1.0" encoding="utf-8" ?>
<parameters>
<parameter name="my.config" description="sdfsdfsdfsd" defaultValue="fart">
<parameterEntry kind="XmlFile"
scope="\Web\.config$"
match="/configuration/appSettings/add[@my.config]/@value/text()" />
</parameter>
</parameters>
我构建我的包
msbuild app.csproj /T:Package /p:Configuration=myconfigprofile;PackageLocation=mydeploy.zip
我看看mydeploy.SetParameters.xml
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="IIS Web Application Name" value="Default Web Site/myApp_deploy" />
<setParameter name="my.config" value="fart" />
</parameters>
然后我进入 mydeploy.zip 内部的 parameters.xml 并看到它也在那里:
<parameters>
<parameter name="my.config" description="sdkflsdjfldfj" defaultValue="fart">
<parameterEntry kind="XmlFile" scope="\Web\.config$" match="/configuration/appSettings/add[@name='my.config']/@value/text()" />
</parameter>
</parameters>
到目前为止看起来不错,然后我部署:
mydeploy.deploy.cmd /Y /M:server1
我在部署服务器上查看 web.config,值未转换。我也没有看到任何错误,我该如何调试呢?
当我 运行 msbuild 和 parameters.xml 呈现时,那里发生了什么神奇的事情?包准备如何通过参数将 web.config 转换为 Web 部署?
这个:
add[@name='my.config']
必须更改为:
add[@key='my.config']
但更大的问题仍然存在,我该如何调试?我不得不尝试一百万次,只是猜测,因为我有零 errors/logs 来帮助解决这个问题。是否有详细的日志记录或某种验证器或任何东西?
为了调试 technet 给了我这个试试: msbuild MyProject.proj /t:go /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic
如果您使用的是 MSDeploy,则可以使用以下命令获取部署的完整输出:
msdeploy -verb:sync -source:dirpath=C:\WebDeployDemo\Src -dest:dirpath=C:\WebDeployDemo\Dst -setParamFile=C:\WebDeployDemo\ParameterFile.xml -详细 >msdeploysync-verbose.log
如果您使用 -verbose 标志,这有助于调试 VSTS WebRM 部署。
来源: https://docs.microsoft.com/en-us/iis/publish/troubleshooting-web-deploy/troubleshooting-web-deploy https://blogs.msdn.microsoft.com/spike/2012/10/12/using-msdeploy-to-update-and-remove-sections-in-web-config-a-simple-example/