我有一个自动和编程更新的WiX文件。这个文件需要添加一个define标签,但我找不到用C#做这个的方法。每次我尝试添加一个元素时,它都表示它不包含在根元素中(这是真的,因为“define”是一个预处理器命令,并且不包含在根元素中)。为了编辑XML标签(也是预处理器),还有内置的功能。有谁知道是否还有内置的功能定义?谢谢你的帮助!
答案 0 :(得分:2)
如果您使用的是XmlWriter,请使用WriteProcessingInstruction编写处理指令。如果您使用的是XSLT,请使用xsl:processing-instruction。如果您使用不同的C#机制来创建XML,请告诉我们 - 大多数机制都有创建处理指令的工具。
答案 1 :(得分:1)
这是我用于同一任务的函数
static void WritePreProcessor(Parameters p)
{
XmlDocument doc = new XmlDocument();
doc.Load(p.InputXml);
XmlProcessingInstruction pi = doc.CreateProcessingInstruction(p.Name, p.Value);
XmlNode root = doc.DocumentElement;
doc.InsertBefore(pi, root);
doc.Save(p.OutputXml);
}
p.Name =“define”,p.Value =“SourceDir = .... \ build”,结果如下
<?xml version="1.0" encoding="utf-8"?>
<?define SourceDir=..\..\build?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
...
</Fragment>
</Wix>
答案 2 :(得分:0)
我认为你必须在“文本”模式下编辑文件,而不是在XML模式下编辑文件。 一种可能的解决方案是在XML模式下在文件中插入特殊标记,例如
<a_very_special_marker/>
然后在文件的文本上替换这些标记。