Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当路径包含哈希(#)时,在Visual Studio中使用相对路径指定XML架构时出现的问题_C#_Xml_Visual Studio_Xsd - Fatal编程技术网

C# 当路径包含哈希(#)时,在Visual Studio中使用相对路径指定XML架构时出现的问题

C# 当路径包含哈希(#)时,在Visual Studio中使用相对路径指定XML架构时出现的问题,c#,xml,visual-studio,xsd,C#,Xml,Visual Studio,Xsd,我将我的C项目存储在一个名为“C”的文件夹下。但是,我发现,当XML文件及其伴随的模式存储在此文件夹下时,VisualStudio无法找到指定给noNamespaceSchemaLocation的文件。相反,它会查找名称包含哈希的文件夹的父文件夹 例如,给定以下XML和模式 存储在C:\Programming\C#\Project\中的Visual Studio会抱怨C:\Programming下不存在XMLSchema1.xsd文件。但是,如果指定xsd的绝对路径,或者简单地将项目移出

我将我的C项目存储在一个名为“C”的文件夹下。但是,我发现,当XML文件及其伴随的模式存储在此文件夹下时,VisualStudio无法找到指定给noNamespaceSchemaLocation的文件。相反,它会查找名称包含哈希的文件夹的父文件夹

例如,给定以下XML和模式



存储在C:\Programming\C#\Project\中的Visual Studio会抱怨C:\Programming下不存在XMLSchema1.xsd文件。但是,如果指定xsd的绝对路径,或者简单地将项目移出C#文件夹,则效果良好


这种行为是怎么回事?或者更准确地说,是否可以在不必将文件移动到其他地方的情况下解决此问题?通过一些研究,这里的问题似乎是#被认为是;这一切都很有趣,但理想情况下,我想以某种方式发出信号,我的#应该简单地按原样阅读。由于这是一个开源项目,我不能绝对提到我存储文件的位置。

您对这个问题的评估似乎是正确的。路径中有
#
会使XML解析器认为名称中有
#
的目录的父目录是当前目录,因此如果使用相对路径,它会相对于该目录进行搜索。除了使用绝对路径或在路径名中避免使用
#
之外,我不确定是否有其他方法可以解决这个问题。我不知道VS的详细功能,但您需要非常小心,不要假设文件名和URI是可互换的。软件在接受文件名时通常是自由的,您应该提供一个URI,但这种自由可能不会扩展到像“#”这样在URI中有特殊含义的字符。此类字符应使用%HH编码进行转义。