我无法让 MS Build 输出转换后的Web.Config
文件。我已经按照NuGet 文档中的描述使用 NuGet 包还原设置了构建项目。除了转换之外,构建的每个部分(包还原、CI、Web 部署包)都有效。我已经尝试了基本设置和自定义项目文件以及许多其他选项,但我没有得到任何结果。
我之前已经完成了配置转换设置,没有问题。我安装了 Slow Cheetah,可以预览我当前的转换并查看它是否有效。当我通过本地运行构建时MSBuild.exe
,转换实际上发生了:
TransformWebConfigCore:
Transforming Source File: G:\MyProject\Web.config
Applying Transform File: G:\MyProject\Web.Debug.config
Output File: obj\Debug\TransformWebConfig\transformed\Web.config
Transformation succeeded
(如果我查看 -v 输出,我可以看到单独的转换运行)
然后 Web Deploy 参数化我的web.config
:
Transformed Web.config using G:\MyProject\Web.Debug.config into obj\Debug\TransformWebConfig\transformed\Web.config.
PipelineTransformPhase:
Publish Pipeline Transform Phase
PreAutoParameterizationWebConfigConnectionStrings:
Creating directory "G:\MyProject\obj\Debug\CSAutoParameterize\transformed\Views\".
Copying obj\Debug\TransformWebConfig\transformed\Web.config to obj\Debug\CSAutoParameterize\original\Web.config.
AutoParameterizationWebConfigConnectionStringsCore:
Transforming Source File: G:\MyProject\Views\Web.config
Applying Transform File: <?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add
connectionString="{% token='$(ReplacableToken_#(parameter)_#(tokennumber))' xpathlocator='name' parameter='$(name)-Web.config Connection String' description='$(name) Connection String used in web.config by the application to access the database.' defaultValue='$(connectionString)' tags='SqlConnectionString' %}"
xdt:Transform="SetTokenizedAttributes(connectionString)" xdt:SupressWarnings="True" />
</connectionStrings>
</configuration>
No element in the source document matches '/configuration/connectionStrings'
Not executing SetTokenizedAttributes (transform line 6, 15)
Output File: obj\Debug\CSAutoParameterize\transformed\Views\Web.config
Transformation succeeded
PostAutoParameterizationWebConfigConnectionStrings:
Auto ConnectionString Transformed obj\Debug\TransformWebConfig\transformed\Web.config into obj\Debug\CSAutoParameterize\transformed\Web.config.
然后将参数化文件移动到包中,并删除转换后的文件。
将 obj\Debug\CSAutoParameterize\transformed\Web.config 复制到 obj\Debug\Package\PackageTmp\Web.config。删除文件“obj\Debug\CSAutoParameterize\transformed\Web.config”。
所以我有一个转换后的web.config
文件,它不会出现在我的构建输出中。为什么转换发生但没有被复制到输出目录或 web 部署包?