我想web.config文件转换本地工作,但显然做转换时的部署才会发生。

这是一种方式来运行的MSBuild目标“TransformWebConfig”没有它经历了“重建”过程中,还可以指定输出目录,吐出转化web.config中没有任何人知道?

修改:使用赛义德的回答,我创建了一个.bat文件执行运行任务对我来说:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Msbuild.exe "D:\Demo\Transformation.proj" /t:TransformWebConfig 

copy /Y  "D:\Demo\Web.config" "D:\MyProject\Web.config" 

del ""D:\Demo\Web.config"

的“Transformation.proj”是Sayed的的代码段的在下面的答案的副本。只需指定源,目标,并为转型目标。新的文件,在这种情况下,转化的“web.config”将在“d:\演示”目录。我简单地复制过来重写我的项目的web.config,最后删除生成的文件中的“演示”文件夹中。

另外,我创建了一个宏运行该批处理文件和用于我执行改造的探讨:

Public Module DoTransform
    Sub RunTransformBatchFile()
        Try
          Process.Start("D:\Demo\RunTransform.bat")
        Catch ex As System.Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Module

您还可以添加一个按钮在工具栏上运行该批处理和/或指定一个快捷键来执行。

有帮助吗?

解决方案

如果你想改变一个配置文件,而无需使用Web发布管道,那么你只需手动使用的TransformXML任务。我写这个详细的博客文章在 http://sedodream.com/2010/ 4月26日/ ConfigTransformationsOutsideOfWebAppBuilds.aspx ,但这里有高灯:

<Project ToolsVersion="4.0" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <UsingTask TaskName="TransformXml"
             AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>

    <Target Name="Demo">
        <TransformXml Source="app.config"
                      Transform="Transform.xml"
                      Destination="app.prod.config"/>
    </Target>
</Project>

下面我手动使用transform.xml文件变换app.config文件和目标文件是app.prod.config。

一件事,你提到的是运行应用程序时能够做局部改造。为什么我们只进行变换的包/发布的原因是因为,如果我们转换的web.config本身那么下一次您调试应用程序在web.config被再次转化。因此,举例来说,如果你的web.debug.config你有改造价值增加的配置,一切都OK了你第一次添加,但那么下一次你运行/调试您的应用程序将再次得到补充。所以最好避免。

其他提示

如果您正在使用Visual Studio 2015年,您只需右键单击所需环境的变换,然后单击“查看预览” ......然后,它会产生变换,并且您可以复制并粘贴到正常Web.config文件进行调试。只是不要犯它!

如果您正在使用Visual Studio 2013,您可以安装SlowCheetah - XML变换扩展

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top