gpt4 book ai didi

asp.net - 使 Web.config 转换在本地工作

转载 作者:行者123 更新时间:2023-12-03 07:34:44 26 4
gpt4 key购买 nike

我想让 web.config 转换在本地工作,但显然这些转换仅在进行部署时发生。

有人知道一种方法来运行 msbuild 目标“TransformWebConfig”而不经过“重建”过程,并指定和输出目录来吐出转换后的 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"

“Transformation.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

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

最佳答案

如果您想在不使用 Web 发布管道的情况下转换配置文件,那么您只需手动使用 TransformXml 任务即可。我已经在 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>

这里我使用transform.xml文件手动转换app.config文件,目标文件是app.prod.config。

您提到的一件事是能够在运行应用程序时在本地进行转换。我们只对 package/publish 执行转换的原因是,如果我们转换 web.config 本身,那么下次您调试应用程序时,web.config 会再次转换。因此,例如,如果在 web.debug.config 中您进行了向配置添加值的转换,则第一次添加时一切正常,但下次运行/调试应用程序时它将再次添加。所以最好避免这种情况。

关于asp.net - 使 Web.config 转换在本地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3613714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com