在web.config的“myconfig”配置文件转换中,我在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,但未转换该值。我也看不出任何错误,我怎么调试呢?
当我使用parameters.xml运行msbuild时,会发生什么魔术?包如何能够通过参数将web.config转换为Web部署?
答案 0 :(得分:1)
此:
add[@name='my.config']
不得不改为:
add[@key='my.config']
但更大的问题仍然存在,我该如何调试?我不得不尝试一百万次而只是猜测,因为我没有错误/日志来帮助排除故障。是否有详细的日志记录或某种验证器或任何东西?
对于调试technet给了我这个尝试: msbuild MyProject.proj / t:go / fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic
答案 1 :(得分:1)
如果使用的是MSDeploy,则可以使用以下命令获取部署的完整输出:
msdeploy -verb:sync -source:dirpath = C:\ WebDeployDemo \ Src -dest:dirpath = C:\ WebDeployDemo \ Dst -setParamFile = C:\ WebDeployDemo \ ParameterFile.xml -verbose> msdeploysync-verbose.log < / p>
如果使用-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/