2012-04-25 69 views
3

我试图使用TransformXml任务来获取所有配置转换在一个镜头,无论在Visual Studio中选择的生成配置。我可以通过编辑.csproj文件来完成它,这就是它。TransformXml Web.config发布时

<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> 

这里的问题是,当我做一个发布,转换的配置文件被放置在输出目录,但这发生在删除操作之前。我需要在删除操作之后对配置进行转换。

请指教?

回答

0

小心MSBuild和VSBuild DO不同。 Afterpublish is VERY limited

Try having msbuild save the emitted slnhere

您是否已验证文件是否在预期时间进行了转换?在您的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