使Web.config转换在本地工作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使Web.config转换在本地工作相关的知识,希望对你有一定的参考价值。
我想让web.config转换在本地工作,但显然只在进行部署时才会发生转换。
有没有人知道如何运行msbuild目标“TransformWebConfig”而不通过“rebuild”进程,还指定并输出目录在哪里吐出转换后的web.config?
编辑:使用Sayed的答案,我创建了一个.bat
文件来为我执行任务:
C:WindowsMicrosoft.NETFramework64v4.0.30319Msbuild.exe "D:DemoTransformation.proj" /t:TransformWebConfig
copy /Y "D:DemoWeb.config" "D:MyProjectWeb.config"
del ""D:DemoWeb.config"
“Transformation.proj”是Sayed的代码片段的副本,在下面的答案中。只需指定转换的源,目标和目标。新文件(在本例中为已转换的“web.config”)将位于“D: Demo”目录中。我只是将其复制以覆盖我的项目的web.config,最后,删除“demo”文件夹中生成的文件。
另外,我创建了一个宏来运行这个批处理文件并为我执行转换:
Public Module DoTransform
Sub RunTransformBatchFile()
Try
Process.Start("D:DemoRunTransform.bat")
Catch ex As System.Exception
MsgBox(ex.Message)
End Try
End Sub
End Module
您还可以在工具栏上添加一个按钮来运行此批处理和/或指定要执行的快捷键。
如果要在不使用Web Publishing Pipeline的情况下转换配置文件,则只需手动使用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)MicrosoftVisualStudiov10.0WebMicrosoft.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中有转换为配置添加值,则第一次添加该值时一切正常,但下次运行/调试您的应用时,它将再次添加。所以最好避免这种情况。
如果您使用的是Visual Studio 2015,则可以右键单击所需环境的转换,然后单击“查看预览”...然后它将生成转换,您可以将其复制并粘贴到正常的Web.config中。用于调试目的的文件。只是不要提交它!
如果您使用的是Visual Studio 2013,则可以安装SlowCheetah - XML Transforms扩展
以上是关于使Web.config转换在本地工作的主要内容,如果未能解决你的问题,请参考以下文章