当我使用如下网络路径构建新的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的任何文档。
任何帮助?
答案 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