发布时TransformXml Web.config

时间:2012-04-25 12:54:29

标签: c# asp.net web-config

我正在尝试使用TransformXml任务来一次性转换所有配置,而不管在visual studio中选择的构建配置。我可以通过编辑.csproj文件来完成它,就在这里。

    <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
<Target Name="TransformWebConfig"  AfterTargets="AfterPublish">
    <TransformXml Source="$(SolutionDir)WCFServices\Web.config" 
              Transform="$(SolutionDir)WCFServices\Web.Release.config" 
              Destination="$(OutDir)WebRelease.config" 
              StackTrace="true" />
</Target>

这里的问题是在我发布时,转换的配置文件放在输出目录中,但这发生在删除操作之前。我需要在删除操作后转换配置。

请指教?

1 个答案:

答案 0 :(得分:0)

注意MSBuild和VSBuild DO不同。 Afterpublish is VERY limited

Try having msbuild save the emitted sln here

您是否验证过该文件是否在预期时间进行了转换?在您的transformxml调用之前添加<message importance="high" text="Doing Custom Transform" />,然后在此调用之后添加另一封具有不同文本Finished Custom Transform的消息。 This post直接表达了您对涉及专业出版目标的事情的愿望。

常见的msbuild调试信息:

希望这种行为是依赖于msbuild而不是VSBuild,因为这两个构建过程不同。如果你很幸运,这跟MSBuild遵循msbuild调试过程的行为相同:

与msbuild中的任何神奇行为一样,在CSProj文件中查找任何import target=代码并查找这些文件。通过这些将导致您做出关于此任何一项的决定。

您也可以将VS的调试器附加到构建过程中 - http://blogs.msdn.com/b/visualstudio/archive/2010/07/06/debugging-msbuild-script-with-visual-studio.aspx + http://blogs.msdn.com/b/visualstudio/archive/2010/07/09/debugging-msbuild-script-with-visual-studio-2.aspx

Determining build order

同样在暂时提高构建详细程度http://blogs.msdn.com/b/msbuild/archive/2005/09/29/475157.aspx