DirectoryInfo抛出System.OverflowException

时间:2017-06-19 21:01:47

标签: c# .net

当我使用如下网络路径构建新的DirectoryInfo时:

using Delimon.Win32.IO;

DirectoryInfo di = new DirectoryInfo(@"\\a\path\to\a\place\you\are\not\allowed\to\know")

我知道路径是正确的,因为它在我复制粘贴时会在浏览器中打开。但是我收到了一个错误:

  

“System.OverflowException:算术运算导致溢出。”

这是我可以提供的所有调用堆栈信息。

System.OverflowException: Arithmetic operation resulted in an overflow.
at Delimon.Win32.IO.Helpers.GetFileInformation(String path)
at Delimon.Win32.IO.FileSystemInfo.Refresh()
at Delimon.Win32.IO.DirectoryInfo..ctor(String dir)

路径长度为67个字符。所以它不是一条漫长的道路。

我找不到因构建DirectoryInfo对象而导致的System.OverflowException的任何文档。

任何帮助?

2 个答案:

答案 0 :(得分:1)

我刚刚收到这个确切的错误

  

System.OverflowException:'算术运算导致溢出。'

并设法隔离原因。

以下行给出错误:

string[] files = Delimon.Win32.IO.Directory.GetFiles(@"d:\temp");

此行来自我正在重写的旧应用。知道它在旧版本中工作,但在新版本中没有,我删除了新版本中的所有内容和所有内容,并留下了空白表单。我仍然有错误。

然后我创建了一个新的空项目并尝试了其中的代码,并且它有效。即使我删除了新应用中的所有内容,我仍然会收到错误消息。这表明设置有问题。所以我开始比较项目文件。

*.csproj文件中,有这一行:

<Prefer32Bit>false</Prefer32Bit>

并且它不在旧应用程序中,也不在新项目中。

似乎在创建新项目时,默认情况下会选中“首选32位”(Project -> Properties -> Build -> General),但在我的新应用中,未选中此项。我不记得自己取消选中,所以我不知道它是如何取消选中的。检查完毕后,我不再收到错误。

答案 1 :(得分:0)

我使用的是Delimon.Win32.IO.DirectoryInfo,它显然是一个旧的,未维护的代码库。我应该一直在使用System.IO.DirectoryInfo