只需一行代码:
System.IO.Ports.SerialPort.GetPortNames();
在调试时它运行良好,但发布版本会产生DirectoryNotFoundException异常:
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\dev'.
at System.IO.Enumeration.FileSystemEnumerator`1.CreateDirectoryHandle(String path, Boolean ignoreNotFound)
at System.IO.Enumeration.FileSystemEnumerator`1.Init()
at System.IO.Enumeration.FileSystemEnumerator`1..ctor(String directory, Boolean isNormalized, EnumerationOptions options)
at System.IO.Enumeration.FileSystemEnumerable`1..ctor(String directory, FindTransform transform, EnumerationOptions options, Boolean isNormalized)
at System.IO.Enumeration.FileSystemEnumerableFactory.UserFiles(String directory, String expression, EnumerationOptions options)
at System.IO.Directory.InternalEnumeratePaths(String path, String searchPattern, SearchTarget searchTarget, EnumerationOptions options)
at System.IO.Ports.SerialPort.GetPortNames()
at ...
当程序运行在D盘时,它会尝试查找 D:\dev
目录而不是 C:\dev
目录。
创建这个目录可以让程序正常工作,但为什么它需要这样一个目录呢?
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM
,因为我所能看到的就是这些。很有可能是你特定机器上出现了问题。 - Andy