如何通过C#进程类解析unc路径?
我有以下代码片段:如何通过C#进程类解析unc路径?,c#,command-line,C#,Command Line,我有以下代码片段: private XDocument CreateXmlForMediaFile(string mediaFilePath) { var args = string.Format("-f {0} --Output=XML", mediaFilePath); var miProcess = new Process { StartInfo = new ProcessStartInfo()
private XDocument CreateXmlForMediaFile(string mediaFilePath)
{
var args = string.Format("-f {0} --Output=XML", mediaFilePath);
var miProcess = new Process
{
StartInfo = new ProcessStartInfo()
{
Arguments = args,
FileName = _mediaInfoPath, // path to where MediaInfo.exe is located.
RedirectStandardOutput = true,
CreateNoWindow = true,
UseShellExecute = false
}
};
// create and instantiate a new xdocument that contains our results for the current manifest.
miProcess.Start();
var newXDoc = XDocument.Load(miProcess.StandardOutput);
return newXDoc;
}
无论何时
mediaFilePath=本地路径=返回完整的xml文档
e、 g C:\temp\input\ABC001.mp3
但是
mediaFilePath=unc路径,在服务器上某处=返回空xml文档
e、 g\\w2k testharness\SAMI Testdata\CarrierBase\ABC001.mp3
因此,从我所知道的基本情况来看,当MediaInfo通过c#中的进程对象启动时,它不能正确解析网络路径,就像当媒体文件是本地文件时,返回一个大的xml文档,如果该文件恰好不是本地文件,那么我们会得到一个空的xml文档
最后,我使用File.Exists(…)来验证每个文件是否存在。证明这是UNC路径中空格的简单情况-=| 密码是可靠的。事实证明,如果您通过应用程序(即c#命令行应用程序,内部或非内部)通过UNC路径访问网络资源,并且您的UNC路径作为参数传入如果路径中有空格,则应该用双引号括起来。
否则,如果没有双引号,作为参数或硬编码值传入的路径中不得有空格!否则它将不起作用。您永远不应该将路径作为参数传递而不带引号。避免引用是将bug引入程序的一种好方法。如果你设法使你的程序工作而不传递那些引文,那就认为自己是幸运的。