代码之家  ›  专栏  ›  技术社区  ›  Diego C.

制造Web.config文件转换在本地工作

  •  37
  • Diego C.  · 技术社区  · 14 年前

    我想得到web.config文件转换在本地工作,但显然转换只在执行部署时发生。

    :使用Sayed的答案,我创建了一个 .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"
    

    “这个”转换.proj是下面答案中Sayed代码片段的副本。只需指定转换的源、目标和目标。新文件,在本例中,是已转换的“web.config文件”将位于“D:\Demo”目录中。我只是复制它来覆盖我的项目web.config文件最后,删除“demo”文件夹中生成的文件。

    此外,我还创建了一个宏来运行此批处理文件并为我执行转换:

    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
    

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

    2 回复  |  直到 7 年前
        1
  •  39
  •   Sayed Ibrahim Hashimi    14 年前

    http://sedodream.com/2010/04/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>
    

    这里我手动转换应用程序配置文件使用转换.xml并且目标文件是应用程序产品配置.

    你提到的一件事是在运行应用程序时能够在本地进行转换。我们之所以只对包/发布执行转换,是因为web.config文件然后下次调试应用程序时web.config文件又变了。例如,如果在你的web.debug.config文件你可以通过转换向config中添加一个值,第一次添加时一切正常,但下次运行/调试应用程序时会再次添加。所以最好避免这样。

        2
  •  7
  •   Garrett Simpson    8 年前

    如果您使用的是Visual Studio 2015,只需右键单击所需环境的转换,然后单击“查看预览”。。。然后它将生成转换,您可以将其复制并粘贴到法线中Web.config文件用于调试的文件。别犯了!