使用XDT-Transform添加注释

时间:2013-01-18 13:45:23

标签: visual-studio-2010 xdt-transform

我在Visual Studio 2010中使用XDT-Transform生成多个配置文件。

Xml转换工作正常。但我似乎无法找到将xml转换文件中的注释带到最终文件的方法。

就像添加配置设置的Insert转换一样,无论如何都要添加注释?没有评论我可能不得不放弃整个转换方法。

5 个答案:

答案 0 :(得分:7)

我找到了一个可能的解决方案。

只需将某些内容表示为您要添加它的最高级别的插入内容。之后,您可以像平常一样添加元素。

这意味着这不会带来你的评论

<appSettings>
    <!--My Secret Encryption Key-->
    <add key="ENCRYPT_KEY" value="hunter2" xdt:Transform="Insert" />
</appSettings>

但这会

<appSettings xdt:Transform="Remove" />
<appSettings xdt:Transform="Insert" >
    <!--My Secret Encryption Key-->
    <add key="ENCRYPT_KEY" value="hunter2"/>
</appSettings>

其他任何东西都不需要变换,因为它完全复制了元素。

上升:您收到了评论,无需在每个关键元素中插入xdt:Transform="Insert"

下行:您最终会完全销毁该部分并重新添加该部分,最后将其附加到Web.config的底部。如果总格式的变化没问题那就太棒了。此外,它还需要您重新创建整个部分,这可能会增加变换的大小。

答案 1 :(得分:3)

这不是你想要的,但我发现它偶尔会有用。 如果注释包含在添加的元素中,XmlTransform将添加注释。

e.g。

<appSettings>
<remove key="comment" value="" xdt:Transform="Insert"><!-- this comment will appear in the transformed config file! --></remove>
</appSettings>

答案 2 :(得分:3)

没有编写代码就不可能。

但是,我目前的解决方案是基于以下链接扩展XDT转换库:Extending XML (web.config) Config transformation

这是我的CommentAppendCommentPrepend的示例,它将评论文本作为输入参数,因为我认为Insert本身无法作为您放置{的评论XDT转换会忽略{1}},因为它是注释。

xdt:Transform="Insert"

输入internal class CommentInsert: Transform { protected override void Apply() { if (this.TargetNode != null && this.TargetNode.OwnerDocument != null) { var commentNode = this.TargetNode.OwnerDocument.CreateComment(this.ArgumentString); this.TargetNode.AppendChild(commentNode); } } } internal class CommentAppend: Transform { protected override void Apply() { if (this.TargetNode != null && this.TargetNode.OwnerDocument != null) { var commentNode = this.TargetNode.OwnerDocument.CreateComment(this.ArgumentString); this.TargetNode.ParentNode.InsertAfter(commentNode, this.TargetNode); } } }

web.Release.config

输出:

<security xdt:Transform="CommentPrepend(comment line 123)" >
</security>
<security xdt:Transform="CommentAppend(comment line 123)" >
</security>

我目前正在使用Reflector查看Microsoft.Web.XmTransform附带Visual Studio V12.0来弄清楚它是如何工作的,但最好还是看看source code itself

答案 3 :(得分:0)

据我所知,使用XDT-Transform添加评论是不可能的,我担心。

至少在XDT-Transform documentation

中似乎没有提及

答案 4 :(得分:0)

我建立了一个extension for XDT来处理注释注入和其他相关任务。

您可以尝试online