我无法获得MS Build来输出转换后的Web.Config
文件。我使用NuGet包恢复设置了构建项目,如NuGet docs中所述。除了转换之外,构建的每个部分都可以工作(包恢复,CI,Web部署包)。我已经尝试了基本设置和custom project file以及许多其他选项,但我还没有到达任何地方。
我之前没有问题就完成了配置转换设置。我安装了慢速猎豹,可以预览我当前的变换并看到它有效。当我通过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。 删除文件&#34; obj \ Debug \ CSAutoParameterize \ transformed \ Web.config&#34;。
所以我有一个转换后的web.config
文件,它不会在我的构建输出中结束。为什么转换发生但没有被复制到输出目录或Web部署包?
答案 0 :(得分:0)
我在这里遇到了同样的问题。这是由Web部署模式引起的。它使用"project name".SetParameters.xml
中的Web_Package
替换Deploy上的值。
由于你想使用SlowCheetah
,你需要绕过这个。
您可以通过以下方式替换web.config中的connectionstrings设置来完成此操作:
<connectionStrings configSource="connectionStrings.config">
</connectionStrings>
当然,您需要connectionStrings.config文件。你可以手动创建它并放入originasl connectionStrings部分。 该节点应该是文件中唯一的节点。
现在,您可以在SlowCheetah
文件中添加connectionStrings.config
转换。