TFS2013 Git多项目自动构建web.config转换无法正常工作

时间:2014-06-09 20:34:38

标签: msbuild visual-studio-2013 tfs2013 web.config-transform

我无法获得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部署包?

1 个答案:

答案 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转换。