我有这个代码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 &quot;C:\Documents and Settings\test.txt&quot; &quot;C:\&quot; " Return="asyncNoWait" />
LINQ在&
之前生成"
实体,而我的ExeCommand不起作用。
但我不明白为什么LINQ会产生这个。
如何取消生成&
?
答案 0 :(得分:1)
你需要逃避引用,有两种方法可以做到这一点:
在常规字符串中使用反斜杠:
\"
在@ -delimited字符串中使用双引号:
""
这应该有效:
new XAttribute("ExeCommand", @"cmd.exe /c move ""C:\Documents and Settings\test.txt"" ""C:\""; "),