在我的 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>
然后我进入 parameters.xml 里面的 mydeploy.zip 并看到它也在那里:
<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 部署?
最佳答案
这个:
add[@name='my.config']
必须更改为:
add[@key='my.config']
但更大的问题仍然存在,我该如何调试?我不得不尝试一百万次并且只是猜测,因为我有零错误/日志来帮助解决这个问题。是否有详细的日志记录或某种验证器或任何东西?
为了调试 technet 给了我这个试试: msbuild MyProject.proj/t:go/fl/flp:logfile=MyProjectOutput.log;verbosity=diagnostic
关于asp.net - MSDeploy setParameter.xml 不转换 web.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49761166/