LINQ未经我的同意生成实体

时间:2015-06-30 08:03:41

标签: c# xml linq wix

我有这个代码C#来创建XElement:

XNamespace ns = "http://schemas.microsoft.com/wix/2006/wi";
XElement elem = new XElement (ns + "CustomAction", new Object[] {
                                new XAttribute("Id", "shellex"), new XAttribute("Directory", "WINDOWSVOLUME"), new XAttribute("Impersonate", "no"), 
                                new XAttribute("ExeCommand", @"cmd.exe /c move "C:\Documents and Settings\test.txt" "C:\" "), 
                                new XAttribute("Return", "asyncNoWait")});

我有一个函数,它将特定节点上的这个XElement添加到XML文件中。

因此,程序在我的XML文件上生成这一行:

<CustomAction Id="shellex" Directory="WINDOWSVOLUME" Impersonate="no" 
ExeCommand="cmd.exe /c move &amp;quot;C:\Documents and Settings\test.txt&amp;quot; &amp;quot;C:\&amp;quot; " Return="asyncNoWait" />

LINQ在&amp;之前生成&quot;实体,而我的ExeCommand不起作用。

但我不明白为什么LINQ会产生这个。 如何取消生成&amp;

1 个答案:

答案 0 :(得分:1)

你需要逃避引用,有两种方法可以做到这一点:

在常规字符串中使用反斜杠:

\"

在@ -delimited字符串中使用双引号:

""

这应该有效:

new XAttribute("ExeCommand", @"cmd.exe /c move ""C:\Documents and Settings\test.txt"" ""C:\""; "),